您的位置:首页 > 其它

C 语言 关于 宏 中的 # 和 ## 基本知识

2012-03-17 08:05 239 查看
今天看到一篇技术博文的时候,看到##和#,当时真的很无语阿又看到一个自己不知道的知识,呵呵呵~~

此处贴出来,顺便看看其用法:

第一:

通俗来说:

##:就是连接两个参数

# :就是将参数转化为字符串



话不多说,只看DEMO:



include<stdio>

#define S1( s) #s

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

int main()

{

printf(S1(12sd)); //!>输出字符串"12sd"

printf("%d\n ", S2( 1, 3)); //!>连接后的是2e3,但是输出:1000

return 0; //!> 请注意:连接后的操作可以按照既定的方法处理,所以此处是1000

}

第二:

当宏参数是另一个宏的时候需要注意的是凡宏定义里有用'#'或'##'的地方宏参数是不会再展开.

看DEMO:

#include <stdio.h>

#define NUM 2

#define GO(a, b) int( a##b )

int main()

{

printf("%s\n", GO( NUM, NUM )); //!> 由上面的法则可知此处的结果是NUMNUM,并不是22

}

需要增加一个中间处理转化:

#define NUM (2)

#define _GO( a, b) int ( a##b) //!> 中间转化环节

#define GO( a, b) _GO( a, b )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: