首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clang OS X Lion,找不到cstdint

Clang OS X Lion,找不到cstdint
EN

Stack Overflow用户
提问于 2012-04-12 10:43:45
回答 1查看 21.7K关注 0票数 18

我正在尝试编译一个使用cstdint的应用程序。由于苹果弃用了gcc,我想试着用clang编译它,但我得到了错误:

代码语言:javascript
复制
fatal error: 'cstdint' file not found

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-12 10:49:11

假设您有这个应用程序的源代码,所以您可以修改头文件以包含正确的cstdint头文件,因为Clang3.0(Lion的工具附带)确实有这个头文件。

快速解决方案

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

代码语言:javascript
复制
#include <tr1/cstdint>

代码语言:javascript
复制
#include <stdint.h> // which will use the C99 header

冗长乏味的解释

在做了一些额外的阅读之后,因为我记得你可以在没有tr1目录的情况下做到这一点:

默认情况下,您将包含来自/usr/include/c++/4.2.1的C++标头,这些标头是GNU GCC标头。与cstdint一样,/usr/include/c++/4.2.1/tr1包含TR1头文件。

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

示例:

代码语言:javascript
复制
// file called example.cxx
#include <tr1/cstdint>

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

使用以下命令编译此代码:

代码语言:javascript
复制
g++ example.cxx

代码语言:javascript
复制
clang++ example.cxx

它会做你想做的事。

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

代码语言:javascript
复制
// file called example.cxx
#include <cstdint>

int main() {
    // stuff
}

这段代码是这样编译的:

代码语言:javascript
复制
clang++ -stdlib=libc++ example.cxx

不过,如果你使用-stdlib=libc++,这意味着你链接到的是Clang的C++库libc++,而不是GCC的libstdc++

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10116724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档