读书人

宏定义可变参数崩溃解决方法

发布时间: 2013-11-05 14:40:42 作者: rapoo

宏定义可变参数崩溃
定义了一个可变参数的宏。
输入变量时,就会崩溃。如果将该变量替换为一个整数值,可以正常运行。

不明白其中 原理,求大婶指点。
只有20分,不要嫌弃。


#include <stdio.h>
int main()
{
const int nLen = 2;
char szBuf[nLen+1] = {0};
#define SETFMT(width) "%0"#width"d"
#define SETCHNFMT(width) SETFMT(width)
printf(SETCHNFMT(nLen), nLen);

return 0;
}


将SETCHNFMT(nLen)中的nLen换成2之后,可以正常显示。 宏定义?可变参数?崩溃
[解决办法]
宏就是文本替换,SETCHNFMT(nLen)被展开成了"%0nLend"
[解决办法]
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E

读书人网 >C语言

热点推荐