#
在c语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。##
##被称为连接符(concatenator),用来将两个Token连接为一个Token。关于…的使用
…在C宏中称为Variadic Macro,也就是变参宏。do {…} while (0) 在宏定义中的作用
Linux和其它代码库里的宏都用do/while(0)来包围执行逻辑,因为它能确保宏的行为总是相同的,而不管在调用代码中使用了多少分号和大括号。
条件编译
#ifndef D1
printf("D1111111111111111111\n");
#else
printf("others\n");
#endif
#if TEST
printf("1111111111111\n");
#else
printf("2222222222222222");
#endif
#if 1
#endif
防止头文件重复包含
#ifndef _SOMEHEAD_H_
#define _SOMEHEAD_H_
//函数的声明
#endif // !_SOMEHEAD_H_
日志打印
printf("file = %s\nline = %d\n", __FILE__, __LINE__);
参考: