C语言宏操作中##(连接)、#(添双引号)和#@(添单引号)用法
(2016-12-19 13:27:36)| 分类: C/Cpp |
第一次发现竟有此用法,经过网上查找的答案,获知如下。
例如宏定义如下:
#define
Conn(x,y) x##y
#define
ToChar(x) #@x
#define
ToString(x) #x
x##y表示什么?表示x连接y,举例说:
int n =
Conn(123,456); 结果就是n=123456;
char* str = Conn("asdf",
"adf")结果就是 str = "asdfadf";
对于#@x,其实就是给x加上单引号,结果返回是一个const
char。举
例说:char a =
ToChar(1);结果就是a='1';
做个越界试验char a =
ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!
error C2015: too many
characters in constant :P
最后看看#x,估计你也明白了,他是给x加双引号
char* str =
ToString(123132);就成了str="123132";

加载中…