繁体   English   中英

如何解决这个编译警告? (格式说明符问题)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM