首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

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

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

不明白其中 原理,求大婶指点。
只有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

热点排行