加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – clang(3.3 / Xcode)中std :: function的定义在哪里

发布时间:2020-12-14 18:11:24 所属栏目:百科 来源:网络整理
导读:解决的问题=最后看到更新 我正在尝试使用std :: function但它看起来只是包含 functional没有提供定义.我试图编译以下代码: #include functionalstd::functionint(int) f = nullptr; 用c 11作为编译选项: % clang++ -c -std=c++11 t.cc 原因: t.cc:3:6: er
解决的问题=>最后看到更新

我正在尝试使用std :: function但它看起来只是包含< functional>没有提供定义.我试图编译以下代码:

#include <functional>
std::function<int(int)> f = nullptr;

用c 11作为编译选项:

% clang++ -c -std=c++11 t.cc

原因:

t.cc:3:6: error: no type named 'function' in namespace 'std'
std::function<int(int)> f = nullptr;
~~~~~^
t.cc:3:14: error: expected unqualified-id
std::function<int(int)> f = nullptr;
             ^
2 errors generated.

我错过了什么?我知道C很好但是对clang / C 11来说很新,因此我猜想我缺乏重要的知识.

我在MacOS X 10.8上使用clang.

更新1

我试过a sample at cppreference.com site但它也不会编译.提供一些选择解决问题?

更新2

尝试使用clang -c -std = c 11 -stdlib = libc 11 x.cc从cppreference.com上面的示例,编译器仍然说:

x.cc:1:10: fatal error: 'functional' file not found
#include <functional>
         ^
1 error generated.

哪里有功能?我想我应该给-stdlib = libc 11或者其他什么,但它也不起作用:

clang: error: invalid library name in argument '-stdlib=libc++11'

我如何找到-stdlib的参数列表? (注意:在手册页中,只有可用的选项是libc和libstdc,它们都不起作用)

或功能只是不起作用?

解决方法

对于C 11,最好始终调用clang为:clang -std = c 11 -stdlib = libc

我大部分时间都使用它,所以我将环境变量$CXX设置为此值.这样,我在编译和链接中都获得了方言和库选项. -std = c 11不足,因为clang仍将使用/usr/include / c /4.2.1中的(旧)系统gcc头.

-stdlib = libc将使用/usr/lib / c / v1中的clang头,例如< functional>.

有一个similar question,答案是Howard Hinnant,他是(IIRC)的Apple工程师.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读