草庐IT

clang-omp

全部标签

c++ - 如何制作干净的clang前端?

我正在开发一个C++源代码分析器项目,看来clang是一个不错的候选者解析工作。问题是clang严重依赖基础设施“llvm”项目,如何配置它以获得干净的前端,而无需任何面向具体机器的后端?就像LCC一样,它们为专注于解析器部分的人提供了一个“空”后端。任何建议表示赞赏。 最佳答案 我最近在Windows上做了这个。从here下载clang和llvm源代码.安装cmake和Python(与文档相反,您确实需要Python来构建clang;至少,如果cmake找不到Python运行时,它会放弃)。您还需要VS2008或VS2010。有一

c++ - 是否应该通过 std::cin 将负数读入 unsigned 失败(gcc,clang 不同意)?

例如,#includeintmain(){unsignedn{};std::cin>>n;std::cout输入-1时,clang6.0.0输出00而gcc7.2.0输出42949672951。我想知道谁是正确的。或者也许两者都是正确的标准没有指定这一点?如果失败,我的意思是(bool)std::cin被评估为假。clang6.0.0也无法输入-0。从Clang9.0.0和GCC9.2.0开始,在Clang的情况下使用libstdc++或libc++的两个编译器都同意上述程序的结果,与C++版本无关(>=C++11)使用并打印42949672951即他们将值设置为ULLONG_MAX并

c++ - 是否应该通过 std::cin 将负数读入 unsigned 失败(gcc,clang 不同意)?

例如,#includeintmain(){unsignedn{};std::cin>>n;std::cout输入-1时,clang6.0.0输出00而gcc7.2.0输出42949672951。我想知道谁是正确的。或者也许两者都是正确的标准没有指定这一点?如果失败,我的意思是(bool)std::cin被评估为假。clang6.0.0也无法输入-0。从Clang9.0.0和GCC9.2.0开始,在Clang的情况下使用libstdc++或libc++的两个编译器都同意上述程序的结果,与C++版本无关(>=C++11)使用并打印42949672951即他们将值设置为ULLONG_MAX并

c++ - GCC 和 Clang 不在 C++17 中编译 std::hash<std::nullptr_t>

开启https://en.cppreference.com/w/cpp/utility/hash它说从C++17开始Eachstandardlibraryheaderthatdeclaresthetemplatestd::hashprovidesenabledspecializationsofstd::hashforstd::nullptr_tandallcv-unqualifiedarithmetictypes(includinganyextendedintegertypes),allenumerationtypes,andallpointertypes.所以,一个C++17兼容的编

c++ - GCC 和 Clang 不在 C++17 中编译 std::hash<std::nullptr_t>

开启https://en.cppreference.com/w/cpp/utility/hash它说从C++17开始Eachstandardlibraryheaderthatdeclaresthetemplatestd::hashprovidesenabledspecializationsofstd::hashforstd::nullptr_tandallcv-unqualifiedarithmetictypes(includinganyextendedintegertypes),allenumerationtypes,andallpointertypes.所以,一个C++17兼容的编

c++ - 如何处理clang中的全局构造函数警告?

Clang警告(在使用-Weverything或Wglobal-constructors时)关于静态对象的构造函数。warning:declarationrequiresaglobalconstructor[-Wglobal-constructors]AA::my_A;//triggerssaidwarning^~~~为什么这是相关的,应该如何处理这个警告?简单示例代码:classA{//...staticAmy_A;A();};AA::my_A;//triggerssaidwarning 最佳答案 这是一个触发相同警告的简单案例:

c++ - 如何处理clang中的全局构造函数警告?

Clang警告(在使用-Weverything或Wglobal-constructors时)关于静态对象的构造函数。warning:declarationrequiresaglobalconstructor[-Wglobal-constructors]AA::my_A;//triggerssaidwarning^~~~为什么这是相关的,应该如何处理这个警告?简单示例代码:classA{//...staticAmy_A;A();};AA::my_A;//triggerssaidwarning 最佳答案 这是一个触发相同警告的简单案例:

c++ - 如何标记一个区域以使 clang-format 不会触及它?

例如,在MySQL++库中,有一些宏可以用来定义基于sql表定义的简单结构,如下所示:sql_create_6(stock,1,6,mysqlpp::sql_char,item,mysqlpp::sql_bigint,num,mysqlpp::sql_double,weight,mysqlpp::sql_decimal,price,mysqlpp::sql_date,sdate,mysqlpp::Null,description)问题在于,clang-format会以一种更难以阅读的方式重新格式化它(每个参数都换行)。大多数代码格式化程序都可以识别特殊的format-off/forma

c++ - 如何标记一个区域以使 clang-format 不会触及它?

例如,在MySQL++库中,有一些宏可以用来定义基于sql表定义的简单结构,如下所示:sql_create_6(stock,1,6,mysqlpp::sql_char,item,mysqlpp::sql_bigint,num,mysqlpp::sql_double,weight,mysqlpp::sql_decimal,price,mysqlpp::sql_date,sdate,mysqlpp::Null,description)问题在于,clang-format会以一种更难以阅读的方式重新格式化它(每个参数都换行)。大多数代码格式化程序都可以识别特殊的format-off/forma

c++ - 在 Ubuntu 16 上使用 clang++ 编译一个基本的 c++ 程序

我在Ubuntu16.04LTS(服务器)上编译时遇到问题。如果我不包含-std=c++11位,它可以编译。Clang版本是3.8。>catfoo.cpp#include#includeusingnamespacestd;intmain(intargc,char**argv){strings(argv[0]);coutclang++-std=c++11-stdlib=libc++foo.cppInfileincludedfromfoo.cpp:1:/usr/include/c++/v1/string:1938:44:error:'basic_string'ismissingexcept