我正在处理一个使用std=c++17
和-Wall
标志进行编译的C ++项目。通常需要清除警告。
我尝试包括使用在线工具从png文件生成的xpm
图片,并收到以下警告:
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
最糟糕的是,此消息反复出现,以至于我的控制台不再保存错误消息。
有什么办法可以在保留两个标志的同时抑制此警告吗?也许我可以对xpm文件做任何修改?
答案 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
。