我怎样才能抑制 g++与 C++ 链接时 OCaml 编译中的弃用警告;图书馆?

发布于 2024-11-07 10:47:22 字数 243 浏览 0 评论 0原文

当编译 OCaml 项目时,使用 GCC >= 4.4 的 ocamlc-cc g++ 参数链接到需要 C++ 标准库的库(例如 LLVM 的 OCaml 绑定),会生成极其形式的详细警告喷涌:

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

如何删除这些警告?

When compiling an OCaml project which links against libraries requiring the C++ standard library (e.g. LLVM's OCaml bindings) using the -cc g++ argument to ocamlc with GCC >= 4.4 generates extremely verbose warning spew of the form:

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

How is it possible to remove these warnings?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

真心难拥有 2024-11-14 10:47:22

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

-cclib -lstdc++

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

The problem stems from ocamlc generating intermediate C code which triggers warnings when compiled in C++ mode by newer versions of GCC. But this generated code need not be compiled as C++. The only reason to pass -cc g++ for this common case of building against a wrapped C++ library is to ensure that the C++ standard library dependencies are built. The simpler solution, which avoids using the C++ front-end for compiling the ocamlc intermediate code, is simply:

-cclib -lstdc++

which forces linking the generated C code with libstdc++, while still compiling it in plain C mode.

节枝 2024-11-14 10:47:22

我认为你可以

#pragma GCC diagnostic ignored "-Wwrite-strings"

在 C++ 中这样做来抑制这种情况。

I think you can just do

#pragma GCC diagnostic ignored "-Wwrite-strings"

In the C++ to suppress this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文