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

C 网络编程

附录