gpt4 book ai didi

c++ - 如何在 C++ 程序中包含同名的 C 系统头文件而不是 C++ 系统头文件?

转载 作者:行者123 更新时间:2023-11-30 04:31:17 25 4
gpt4 key购买 nike

我的 Mac OS X 系统似乎有几个不同版本的头文件 complex.h , 它们是不相容的。

  • /usr/include/complex.h定义 _Complex 的 C99 实现数字,
  • /usr/include/c++/4.2.1/backward/complex.h是没有 .h 的 C++ header 的薄包装器,它定义了 std::complex 的 C++ 实现数。

我的问题是我有一个使用 C99 复数编译的 C 库,我需要将我的 C++ 程序链接到它。但是,其包含文件引用 <complex.h> ,并且在编译我的程序时,g++ 取而代之的是 C++ 向后兼容 header ,一切都乱套了。

我试过传递 -I/usr/include标记为 g++,但没有帮助。

当包含 <complex.h> 时,如何强制 g++ 使用 C header 而不是 C++ header ? ?

最佳答案

这不是一个完全最优的解决方案,但如果您只是想确保在不修改代码的情况下获得所需版本的 header ,您可以尝试结合使用 -nostdinc-nostdinc++ 带有 -I/usr/include 标志。如果我对文档的理解正确,那应该会阻止 gcc 查看系统头文件的标准列表,而是遵从那些随 -I 标志提供的文件。这应该会覆盖 Os X 自动将向后兼容目录包含在 header 搜索列表中的决定。

但是,有可能使用这些选项您将无法编译。 GCC 规定了以下情况:您提供的目录带有 -I 标志,而该目录已存在于默认系统 header 搜索列表中(它将忽略无关的 -I 标志).希望它足够聪明,注意到系统搜索列表已被清除(通过 -nostdinc 标志),允许它属性添加 -I/usr/include

关于c++ - 如何在 C++ 程序中包含同名的 C 系统头文件而不是 C++ 系统头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com