C99_basics - liuli9203/redis_study GitHub Wiki
宏
#define UNUSED(V) ((void) V) /* 对于有返回值的函数,调用时是没有使用它的返回值,编译器会给出一个警告。通过用void强制转换一下,则明确告诉编译器不使用返回值,可消除编译器警告。*/#define UNUSED(V) ((V) = (V)) /* 避免未使用变量的编译器警告 */
C99 Declaration Keywords
Storage-class specifiers
在一个声明语句中最多允许出现一个存储类型描述符
extern : 默认修饰符, 用于函数声明,表示"具有外部链接的标识符", 这类函数可用于任何程序文件;用于变量声明, 表示该变量在其他单元中已定义。typedef : 提供句法便利性,用于声明带语义的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等示例static : 声明变量的存储生命周期auto :register :
Standard Library
memset(dest, val, len) 内存值初始化atomicSet(var,value) 原子赋值操作size_t malloc_size(const void *ptr); /* Returns size of given ptr */free(void *)
堆内存申请
void *malloc(size_t num_bytes) 申请 num_bytes 大小的堆内存空间,返回 void* 空指针void *calloc(size_t n, size_t size) 申请 n*size 大小的堆内存空间,堆内存初始化为0,返回 void* 空指针void *realloc(void *ptr, size_t new_num_bytes) 对基址为 *ptr 的堆内存对象进行空间扩容到 new_num_bytes,扩容前后的内存地址可能会改变
Callback 函数语法
C 多线程
int pthread_mutex_init(pthread_mutex_t * __restrict, const pthread_mutexattr_t * _Nullable __restrict) 互斥锁初始化
C 信号量
posix