【发布时间】:2012-01-18 04:52:15
【问题描述】:
我正在尝试构建 M-SIM 架构模拟器,但是当我运行 make 实用程序时,gcc 会报告此错误(甚至不是警告)
注意:预期为“char *”,但参数类型为“const char *”
因为这被认为是一个错误。是否有任何标志可以绕过此检查?
【问题讨论】:
-
您可能不应该忽略警告;不要将字符串文字传递给期望可修改缓冲区的函数
-
在 gcc 的信息页面中搜索
-fno-const-strings,这与 Seth 的观点相呼应。 -
向我们展示触发错误的代码。在 C 中,字符串文字不是
const。并向我们展示(复制和粘贴)确切的错误信息;我不记得看到以“note”开头的 gcc 错误消息。 -
更正:gcc 确实会产生该消息。看我的回答。
-
@keeto 对于 GCC 中的 C,您可以使用 -Wwrite-strings 为字符串文字提供“const char*”类型以产生警告。当您的任何代码或库代码被编译时,您是否打开了该警告?如果没有,GCC 不应该产生警告。作为对 honk 的回复,-fno-const-strings 是一个 C++ 选项,在 GCC 3.x 中已弃用并从 4.x 中删除。