c/c++
文章平均质量分 87
follow_blast
这个作者很懒,什么都没留下…
展开
-
值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目- 1. Webbench Webbench是一个在Linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210转载 2017-08-03 17:49:40 · 5067 阅读 · 4 评论 -
用c实现一个阻塞的消息队列
该消息队列的实现,完全是符合posix标准。实现了1.读时,队列空,会阻塞2.写时,队列满,会阻塞为了保证线程安全,采用了互斥量,为了阻塞一定时间,采用了条件变量,二者一起用,实现了一个简单消息队列simple_queue.c#include#include#include#include#include#include"simple_queue.h"pthr原创 2018-01-10 10:44:04 · 5724 阅读 · 5 评论 -
strlen和sizeof的区别与总结
strlen是用来计算字符串的长度,遇到第一个NULL('\0')为止,不包括‘\0’。sizeof是用来计算变量或者对象、类型所占字节的多少。首先来看一个例子:char s1[] = "hello";char* s2 = "hello";char s3[10] = ''hello";sizeof(s1) = 5 strlen(s1) = 5...原创 2018-01-17 15:24:05 · 12903 阅读 · 7 评论 -
宏函数、inline内联函数、普通函数的各自特点
实际只要知道宏定义普通用法就可以知道宏函数和自定义函数的区别了首先宏只是简单的进行替换,发生在预编译阶段知道这个可以慢慢推出来2者有何区别例如宏MAX((a), (b)) (a) > (b)? (a):(b) ---------1自定义函数int get_max(int a, int b){retu原创 2018-03-01 15:26:50 · 516 阅读 · 0 评论 -
hpp头文件与h头文件的区别
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。 ...转载 2018-08-15 16:38:50 · 36961 阅读 · 3 评论 -
const、#define和volatile的总结
1.const:代表着只读,不允许被更改,但是有可能被其他程序更改(可以通过指针修改局部的const变量但是不能修改全局的)上面这个定义给人模糊的感觉,不防先看一个例子编译结果:可以看到编译的结果,显示max变量是read-only(只读)的,无法再次给该变量进行左值运算,但是把这个const变量的地址给一个指针,可以通过该指针来修改这个值。虽然可以做,但是程序员的使用这个...原创 2018-01-25 11:27:53 · 1045 阅读 · 0 评论 -
callback函数详解
在项目中经常会看到一些callback函数,callback函数实现了用户自定义处理主要表现在C语言的面向对象编程、异步处理C语言中的callback函数的实现,主要是利用了函数指针废话不多说,直接贴代码#include<stdio.h>#include<string.h>typedef struct{ int calc_max; int cal...原创 2018-08-30 10:32:23 · 4593 阅读 · 0 评论 -
strcpy、strncpy、memcpy、memmove之间的区别和实现
1.函数声明char* strcpy(char *d_s, const char *s_s);char* strcpy(char *d_s, const char *s_s, size_t n);void* memcpy(void *d_s, const void *s_s, size_t n);void* memmove(void *d_s, const void *s_s, s...原创 2018-09-05 16:54:13 · 533 阅读 · 0 评论 -
void和void*以及NULL、0和'\0'
1.void和void*void:主要是声明函数没有返回,函数没有参数,void不能修饰变量void*:表示一个"无类型"的指针, 无类型的指针可以包容所有其他有类型的指针,有类型指针不包容其他指针void*指针可以接纳一切指针,但是void*指针赋给有类型指针,也要强制类型转换有类型的指针之间进行赋值的时候需要强制类型转换void*指针不支持加法和减法操作(大部分系统,有些...原创 2018-09-06 09:51:58 · 810 阅读 · 0 评论