Chinaunix

标题: #define TRACE(S) printf("%s;\n", #S); S #是什么意思啊? [打印本页]

作者: heavensword    时间: 2006-08-17 11:22
标题: #define TRACE(S) printf("%s;\n", #S); S #是什么意思啊?
有时还会见到
两个##连着用
作者: 思一克    时间: 2006-08-17 11:48
是参数。
##是变数目参数。

这些东西,你自己一实验不就知道了吗。
作者: duke_gun    时间: 2006-08-17 11:53
#将参数转变成字符串
例如 TRACE(whoami);
输出 whoami; new-line

##将参数宏中的参数串联起来。
作者: heavensword    时间: 2006-08-17 13:09
自己测了一下 是#是将 表达式转化为字符串

#define   TT(S) do{  \
        printf("0x%x \n",((#S))) ; \
        printf("0x%x \n",*((#S)));   \
        printf("%s \n",((#S))) ; \
        /*printf("%s \n",((S))) ; */   \
        /*printf("%x \n",((S))) ;*/  \
}while(0);

void main()
{

cout << "**************test \"1+1\"********************"<<endl;
TT("1+1")
cout << "**************test    1+1  ********************"<<endl;
TT(1+1)

}

[ 本帖最后由 heavensword 于 2006-8-17 13:11 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2