C语言中的#和##你还傻傻分不清楚吗

简介: 简单介绍两者的用途并以代码的形式举例

1、#
把宏参数变成一个字符串

2、##
连接两个宏参数

3、示例
#include

define STR(s) #s

define CONS(a,b) int(a##e##b)

int main()
{
printf(STR(vck)); // 输出字符串"vck"
printf("STR(123) = %s\r\n", STR(123)); // 输出字符串"123"
printf("%d\n", CONS(2,3)); // 2e3 输出:2000
return 0;
}

当宏参数是另一个宏的时候,需要注意的是凡宏定义里有用’#’或’##’的地方宏参数是不会再展开. 即, 只有当前宏生效, 参数里的宏!不!会!生!效 !!!!

相关文章
|
缓存 算法 Java
C语言中的内存优化及碎片优化
C语言中的内存优化及碎片优化
|
传感器 数据采集 数据格式
RS485和Modbus通信协议,让工业自动化更高效!
RS485和Modbus通信协议,让工业自动化更高效!
|
新能源
从零开始做逆变器系列文章之逆变原理
从零开始做逆变器系列文章之逆变原理
从零开始做逆变器系列文章之逆变原理
|
10月前
|
JavaScript 前端开发
从零开始做逆变器系列 ( 二 ): 单极性、双极性、单极性倍频SPWM
从零开始做逆变器系列 ( 二 ): 单极性、双极性、单极性倍频SPWM
|
Linux 编译器
一起来认识Linux中的 BUILD_BUG_ON 宏
一起来认识Linux中的 BUILD_BUG_ON 宏