gpt4 book ai didi

c++ - 如何禁用特定的 IBM XL C++ 编译器警告?

转载 作者:行者123 更新时间:2023-11-30 02:01:41 26 4
gpt4 key购买 nike

给定 tmp.cpp:

#include <stdio.h>

#pragma report(disable, CCN8826)

int main(int argc, const char *argv[])
{
const char * hi = "hi\n";
printf(hi);

return 0;
}

尽管我使用了本应抑制警告的 #pragma report,但我仍然得到:

bash-3.1$ xlC -qformat=all tmp.cpp
"tmp.cpp", line 8.12: 1540-2826 (W) The format string is not a string literal
and format arguments are not given.

如何消除该警告?

错误消息编号为 here #pragma 报告描述为 here .我的编译器是 IBM XL C/C++ Advanced Edition for Blue Gene/P, V9.0

最佳答案

我知道它不会直接回答您的问题,但您大概可以通过将代码更改为来避免警告

printf("%s", hi);

如果你有:

void f(char * s) { printf(s); }

你可以修改为:

void f(char * s) { printf("%s", s); }

去除警告。

编辑:处理您的新问题的一种简单、略微有限、可能令人讨厌的方式是

char buf[1024];
snprintf(buf, sizeof(buf), "%s %s", "bloody", "warning");
fprintf(stderr, "%s", buf);

可以将其概括为如下内容(未经测试!)

my_printf(const char* fmt, ...)
{
va_list ap;
char buf[1024];
vsnprintf(buf, sizeof(buf), fmt, ap);
fprintf(stderr, "%s", buf);
}

关于c++ - 如何禁用特定的 IBM XL C++ 编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com