2024年3月14日发(作者:)

宏定义中

"#"

的用法

分类: VC/MFC2011-01-09 11:32 49人阅读 评论(0) 收藏 举报

惭愧, 今天测试了才真正明白, 在宏定义中使用"#", 还是因为群里有TX提出, 才测试的

看代码:

view plain

1. #define macro(a) #a

2. #define macro2(a,b) a##b

3. #define macro3(a,b,c) a##b##c

#a, 表示a不再是一个变量, 而变成了字符串"a"

##表示连接, a##b, 表示输入的参数名为ab, a##b##c同理, 代表变量名为: abc

测试例子:

view plain

1. int x = 3;

2. int y = 4;

3. int xy = 10;

4. int xyz=20;

5. CString str;

6.

7.

8. OutputDebugString(macro(x));

9.

10. ("%d",macro2(x,y));

11. OutputDebugString(str);

12.

13. ("%d",macro3(x,y,z));

14. OutputDebugString(str);

输出结果为:

x

10

20

第一个为x, marco(x), x变成了"x"字符串

第二个为10, macro(x,y), 就是变量xy

第三个为20, macro(x,y,z), 就是变量xyz

C语言宏定义中"#","#@"和"##"的用法

一、一般用法

#把宏参数变为一个字符串,#@把宏参数变为一个字符,##把

两个宏参数贴合在一起。

#include

#include

#define STR(s) #s // #与参数之间可以

有空格