表达式不是一个整体常量clang libc线程
发布时间:2020-12-16 05:04:47 所属栏目:百科 来源:网络整理
导读:我正在尝试在我的 linux机器(ubuntu)上编译一个非常简单的线程程序,但即使我指定了libc,clang似乎仍然会向我抛出错误.我的计划是: #include iostream#include threadvoid call_from_thread() { std::cout "Hello,World!" std::endl;}int main(){ std::threa
我正在尝试在我的
linux机器(ubuntu)上编译一个非常简单的线程程序,但即使我指定了libc,clang似乎仍然会向我抛出错误.我的计划是:
#include <iostream> #include <thread> void call_from_thread() { std::cout << "Hello,World!" << std::endl; } int main() { std::thread t1(call_from_thread); t1.join(); return 0; } 生成文件: CC=clang++ CFLAGS=-std=c++11 -stdlib=libc++ -pthread -c -Wall #proper declaration of libc++,but still an error... LDFALGS= SOURCES=main.cpp OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=bimap all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ .cpp.o: $(CC) $(CFLAGS) $< -o $@ 具体错误: In file included from main.cpp:2: In file included from /usr/include/c++/4.6/thread:37: /usr/include/c++/4.6/chrono:666:7: error: static_assert expression is not an integral constant expression static_assert(system_clock::duration::min() ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. make: *** [main.o] Error 1 我不确定为什么clang没有使用libc,因为如果我没有错误,clang会使用这个库来编译线程.任何帮助表示赞赏! 解决方法
在某些(早期)版本的libc中,某些函数未标记为constexpr,这意味着它们不能在static_assert中使用.您应该检查system_clock :: duration :: min()实际上是那样标记的. [你可能需要查看numeric_limits,因为我似乎记得那就是问题所在]
好消息是,如果这是问题所在,那么您可以自己将constexpr添加到数字限制头文件中;它不会引起任何其他问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Swift 引用计数总结 Strong,Weak, unowned 简单使
- ruby – 珠宝商为我的宝石添加循环依赖
- ruby-on-rails – 从VirtualBox访问Rails服务器
- ruby – 相当于ActiveRecord的“serialize”方法
- c# – 从后面的代码发出http请求
- 使用基于文档的nosql(mongodb,couchdb和riak等)查
- 如何在flutter插件中导入外部iOS框架?
- 如何在Ruby中访问原始命令行参数字符串?
- 小for的Cocos2d-x学习笔记与感悟13之从新建项目到
- Unexpected XML declaration. The XML declarati
热点阅读