包含XPM图像时在C ++ 17中发出警告

时间:2020-05-12 15:11:37

标签: c++ c++17

我正在处理一个使用std=c++17-Wall标志进行编译的C ++项目。通常需要清除警告。

我尝试包括使用在线工具从png文件生成的xpm图片,并收到以下警告:

warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

最糟糕的是,此消息反复出现,以至于我的控制台不再保存错误消息。

有什么办法可以在保留两个标志的同时抑制此警告吗?也许我可以对xpm文件做任何修改?

3 个答案:

答案 0 :(得分:2)

您用来创建XPM文件的工具可能只考虑了缺少const的C语言(或标准C ++)不是错误。但是,在C ++中,字符串文字是const,并且语言会强制执行。您无法更改事物,因此对其进行char*毫无意义,应为const char*

最简单的解决方案是简单地编辑xpm文件并添加const

答案 1 :(得分:0)

回答有点晚了,但我通过在包含 xpm 的行之前添加一行 const 解决了这个问题。

const // to avoid the warning: ISO C ++ forbids converting a string constant to 'char *' [-Wwrite-strings]
#include "image.xpm"

答案 2 :(得分:-1)

包含xpm文件时,您可以暂时silence the warning

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wwrite-strings"
#include "banana.xpm"
#pragma GCC diagnostic pop

Clang的方法相同,只是将GCC替换为clang

相关问题