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

  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) 在宏定义中的作用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值