在编译一个 OCaml 项目时,该项目链接到需要 C++ 标准库的库(例如 LLVM 的 OCaml 绑定),使用-cc g++
参数 to ocamlc
with GCC >= 4.4 会生成极其冗长的警告,形式如下:
warning: deprecated conversion from string constant to ‘char*’
如何删除这些警告?
在编译一个 OCaml 项目时,该项目链接到需要 C++ 标准库的库(例如 LLVM 的 OCaml 绑定),使用-cc g++
参数 to ocamlc
with GCC >= 4.4 会生成极其冗长的警告,形式如下:
warning: deprecated conversion from string constant to ‘char*’
如何删除这些警告?
问题源于ocamlc
生成中间 C 代码,该代码在新版本的 GCC 以 C++ 模式编译时会触发警告。但是这个生成的代码不需要编译为 C++。针对包装的 C++ 库构建这种常见情况的唯一原因-cc g++
是确保构建 C++ 标准库依赖项。避免使用 C++ 前端来编译ocamlc
中间代码的更简单的解决方案是:
-cclib -lstdc++
这会强制将生成的 C 代码与 链接libstdc++
,同时仍以纯 C 模式编译它。
我想你可以做
#pragma GCC diagnostic ignored "-Wwrite-strings"
在 C++ 中抑制了这一点。