[英]How to solve this compilation warning? (Format specifier issue)
我有这个代码:
PRINT_VALUE("Displaying value: %x",A->B.C.D);
D是unsigned short类型。
#define PRINT_VALUE(Name,Val) \
if(Val){fprintf(fp,Name,Val);fprintf(fp,"\n");}\
else {fprintf(fp,Name);fprintf(fp,"\n");}
即使我使用%d并将A-> BCD强制转换为int,也会出现相同的警告。 有帮助吗?
警告信息:
警告:格式'%x'需要匹配的'unsigned int'参数[-Wformat]
你有宏扩展的问题。 我有一个类似的代码。
#define fp stdout
#define PRINT_VALUE(Name,Val) \
if(Val){fprintf(fp,Name,Val);fprintf(fp,"\n");}\
else {fprintf(fp,Name);fprintf(fp,"\n");}
int main()
{
short D = 0;
PRINT_VALUE("Displaying value: %x", (unsigned int)D);
}
该宏扩展如下
int main()
{
short D = 0;
if((unsigned int)D)
{
fprintf(stdout,"Displaying value: %x",(unsigned int)D);
fprintf(stdout,"\n");
}
else
{
fprintf(stdout,"Displaying value: %x"); //<-- the warning is here
fprintf(stdout,"\n");
};
}
else
部分也需要一个参数。 可能这不是你想要你的宏做的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.