C宏定义常见用法与条件编译

来源:互联网 发布:贵州省博联大数据商会 编辑:程序博客网 时间:2024/06/08 13:55
  1. #
    在c语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。

  2. ##
    ##被称为连接符(concatenator),用来将两个Token连接为一个Token。

  3. 关于…的使用
    …在C宏中称为Variadic Macro,也就是变参宏。

  4. 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__);

参考:

  1. C语言宏定义##连接符和#符的使用
  2. do {…} while (0) 在宏定义中的作用
阅读全文
0 0