macos - Clang OS X Lion,找不到 cstdint

标签 macos gcc clang

我正在尝试编译一个使用 cstdint 的应用程序。由于 Apple 已弃用 gcc,我想尝试使用 clang 编译它,但出现错误:

fatal error: 'cstdint' file not found

我知道 gcc 4.6.2 版本可以选择 -std=c++0x 来包含该库,但由于 os x 版本是 4.2,所以这不是一个选项这里。关于我如何继续前进有什么建议吗?我尝试安装 4.6.2,但在构建 gcc 之前编译一些所需的库时遇到了各种问题。

最佳答案

据推测,您拥有此应用程序的源代码,因此您可以修改 header 以包含正确的 cstdint header ,因为 Clang 3.0(Lion 工具附带)确实具有该 header 。

快速解决方案

header 位于 tr1 目录下,因此您需要执行以下任一操作:

#include <tr1/cstdint>

或者

#include <stdint.h> // which will use the C99 header

更长、无聊的解释

在进行了一些额外的阅读之后,因为我记得您可以在没有 tr1 目录的情况下执行此操作:

默认情况下,您将包含来自 /usr/include/c++/4.2.1 的 C++ 头文件,它们是 GNU GCC 头文件。 /usr/include/c++/4.2.1/tr1 包含 TR1 头文件,例如 cstdint

另一种方法是使用 Clang++ 前端进行编译并传递 -stdlib=libc++ 标志,该标志将使用 /usr/include/c++/v1 中的 header ,它们是 Clang 的 C++ header 实现。它有 cstdint

示例:

// file called example.cxx
#include <tr1/cstdint>

int main() {
    // whatever...
}

编译:

g++ example.cxx

clang++ example.cxx

它会做你想做的事。

如果您不想使用 tr1 版本(即使不完全一样,也大致相同):

// file called example.cxx
#include <cstdint>

int main() {
    // stuff
}

编译如下:

clang++ -stdlib=libc++ example.cxx
<小时/>

尽管如果您使用 -stdlib=libc++,则意味着您链接到 Clang 的 C++ 库 libc++,而不是 GCC 的 libstdc++

关于macos - Clang OS X Lion,找不到 cstdint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116724/

相关文章:

ruby - 是否可以使用 Bundler 安装 gem,并告诉它对特定 gem 使用特定编译器?

c - -lcs50 命令行参数在 clang 中有什么作用?

javascript - 如何使时间看起来与系统时钟相似?

c - -mno-cygwin : gcc building Mercurial (Windows 2000)

c# - 尝试编译调用 native 代码的类时,Mono 编译器崩溃

c - 按位与运算不清楚

c++ - Clang 不为 x86 以外的平台编译代码

C++2a 合约编程和编译器

c - `man cc` : no info about -Wall and -g flags (Learn C the Hard Way)

css - 在 Bootstrap 中使用没有文件扩展名的自定义 Mac 字体