【发布时间】:2015-10-30 16:14:48
【问题描述】:
收到如下警告消息,我正在尝试摆脱它
警告:初始化会丢弃指针目标类型中的 `const'
代码需要保持原样,在 VS 中使用 Suppress Specific Warning 但我想知道在 gcc 中是否也有一些方法可以做到这一点。
使用相当旧版本的 GCC 编译器 3.4 我遇到的所有其他帖子都在谈论更高版本。 一些有用的帖子-
How to supress specific warnings in g++
http://www.dbp-consulting.com/tutorials/SuppressingGCCWarnings.html
https://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Warning-Options.html
尝试使用-
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wignored-qualifiers"
//< code that generates warning >
#pragma GCC diagnostic pop
但随后警告增加-
: warning: ignoring pragma: push
: warning: ignoring pragma: "-Wignored-qualifiers
: warning: initialization discards `const' from pointer target type
: warning: initialization discards `const' from pointer target type
: warning: ignoring pragma: pop
【问题讨论】:
-
daignostic是错字吗? -
gcc 3.4: 听起来很有趣 -
如果 gcc 3.4 不支持这些编译指示,您也可以使用
-Wignored-qualifiers编译有问题的源文件。 -
您通常可以通过显式转换来避免该警告,例如
char *s = (char*)"do not modify me";。虽然警告是有原因的。 -
@Maverick,如果您开始在新平台上使用相同的程序,甚至只是在此处使用 gcc 等其他编译器,则链接中给出的参数不适用。 gcc 可能只是使用您正在绘制的相同未定义行为来做不同的事情。根据上下文,这可能是不负责任的。
标签: c gcc suppress-warnings gcc-warning