设为首页 加入收藏

TOP

宏定义printf中#的使用
2014-11-24 00:11:59 来源: 作者: 【 】 浏览:14
Tags:定义 printf 使用

#进行宏字符串连接,在宏中把参数解释为字符串,不可以在语句中直接使用。在宏定义中

printf("%s;/n", #S) 会被解释为

printf("%s;/n", "S")

例如下面的代码


#define TRACE(S) (printf("%s\n", #S), S) /*注意用逗号而不是分号*/
#include
#include
#include
int main()
{
int a=5;
int b=TRACE(a);
const char *str="hello";
char des[50];
strcpy(des,TRACE(str));
puts(des);
system("pause");
return 0;
}

同时宏定义又是一个逗号表达式 ,所以拷贝到des里面的值为后面S也就是str的值。

注意:

int a=printf("%s;\n", "S"),a等于printf的返回值,也就是printf打印的字符个数。

摘自 何昊专栏 程序员面试500问

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇g++ 莫名错误: malloc():memory c.. 下一篇【知其所以然】语义"陷阱&qu..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: