OS X 10.8.5 上的 C++ math.h

标签 c++ macos g++ math.h

我有一个 C++ 程序无法在 OS X 10.8.5 下使用 g++ 编译器进行编译。问题似乎出在 math.h 头文件上。

这是g++的版本

g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/Users/densmore3/local/usr/local/bin/../libexec/gcc/x86_64-apple-darwin14.0.0/4.9.2/lto-wrapper
 Target: x86_64-apple-darwin14.0.0
 Configured with: ../gcc-4.9-20141029/configure --enable-   languages=c++,fortran
 Thread model: posix
 gcc version 4.9.2 20141029 (prerelease) (GCC) 

有 40-50 个以下类型的错误。代码在 10.6 上编译得很好。这是怎么回事?

/Users/xxxx/local/usr/local/lib/gcc/x86_64-apple-darwin14.0.0/4.9.2/include-fixed/math.h:203:1: error: ‘__header_always_inline’ does not name a type
__header_always_inline int __inline_isfinitef(float);

Users/densmore3/local/usr/local/lib/gcc/x86_64-apple-darwin14.0.0/4.9.2/include-fixed/math.h:580:27: error: expected initializer before ‘__AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9’
extern float __inff(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);

这是一段测试代码,它给出了与我的真实代码相同的错误。如果我删除 math.h include 语句,错误就会消失。

#include <iostream>
#include <math.h>
#include <stdio.h>
//#include <complex>
//#include <vector>

int main(int argc, const char * argv[])
{

    // insert code here...
    std::cout << "Hello, World!\n";
    return 0;
}

我使用的编译命令是:

g++ test.cpp

最佳答案

gcc-4.8 是在 OS X 10.8 上使用的正确版本。

关于OS X 10.8.5 上的 C++ math.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380046/

相关文章:

c++ - 访问其用户定义的析构函数已启动但未完成的对象真的是 UB 吗?

c++ - 使用 fstream 读取后写入

iphone - 保留 IBOutlet 数量

c++ - "undefined reference to PrintArgv": why?

c++ - 抑制从类型 'A' 到类型 'B' 的 g++ 警告强制转换消除常量

c++ - 在 Xcode 上用 C++ 创建文件

C++11 可变参数模板模板参数

c++ - 我想在终端窗口中运行我的 CLion 程序

python - 我正在做一个 Tkinter 项目,我无法调整按钮的高度

Ruby eventmachine 编译错误