6

在编译一个 OCaml 项目时,该项目链接到需要 C++ 标准库的库(例如 LLVM 的 OCaml 绑定),使用-cc g++参数 to ocamlcwith GCC >= 4.4 会生成极其冗长的警告,形式如下:

warning: deprecated conversion from string constant to ‘char*’

如何删除这些警告?

4

2 回答 2

7

问题源于ocamlc生成中间 C 代码,该代码在新版本的 GCC 以 C++ 模式编译时会触发警告。但是这个生成的代码不需要编译为 C++。针对包装的 C++ 库构建这种常见情况的唯一原因-cc g++是确保构建 C++ 标准库依赖项。避免使用 C++ 前端来编译ocamlc中间代码的更简单的解决方案是:

-cclib -lstdc++

这会强制将生成的 C 代码与 链接libstdc++,同时仍以纯 C 模式编译它。

于 2011-05-14T22:11:31.797 回答
2

我想你可以做

#pragma GCC diagnostic ignored "-Wwrite-strings"

在 C++ 中抑制了这一点。

于 2011-08-09T14:23:34.700 回答