草庐IT

clang-omp

全部标签

c++ - 在 Windows 上使用 -faddress-sanitizer 进行 Clang

我的意图是使用Clang作为Windows上Valgrind的替代品,以在我编写的C/C++程序中查找缓冲区溢出、动态内存滥用等.我已经按照提供的说明成功构建了Clanghere.我尝试使用-faddress-sanitizer选项(如here指定)编译一个简单的C程序,然后抛出以下错误-gcc.exe:error:unrecognizedcommandlineoption'-faddress-sanitizer'Usingbuilt-inspecs.COLLECT_GCC=C:/MinGW/bin/gcc.exeTarget:mingw32Configuredwith:../gcc-

c++ - 正如 Clang 似乎表明的那样,这段代码真的是未定义的吗?

我在使用单元测试库Catch的项目上打开了-fsanitize=undefined。来自Catch的一行被此标志指示为导致未定义的行为。我设法做了一个孤立的例子:#include#includeintmain(){std::ostringstreamos;os编译:clang++-fsanitize=undefinedmain.cpp如果我运行它,将给出以下打印:/usr/bin/../lib64/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../include/c++/4.9.2/bits/ios_base.h:96:24:runtimee

c++ - 我在 Clang 中发现错误了吗?

我尝试用Clang编译下面的代码classPrasoon{staticconstintdummy=0;};intconstPrasoon::dummy=0;intmain(){}上面的代码用Clang.编译没有报错prasoon@prasoon-desktop~$clang++--versionclangversion2.8(trunk107611)Target:i386-pc-linux-gnuThreadmodel:posixprasoon@prasoon-desktop~$catbug.cppclassPrasoon{private:staticconstintdummy=0;}

c++ - clang 上的模棱两可的运算符重载

当我尝试编译这个测试程序时:structcomma_guard{templateconstcomma_guard&operator,(T&&)const{return*this;}};structfoo{};templateToperator,(Tx,foo){returnx;}intmain(){(comma_guard(),foo());}我在clang上得到一个编译错误:comma_guard.cpp:20:19:error:useofoverloadedoperator','isambiguous(withoperandtypes'comma_guard'and'foo')(c

c++ - 返回元组时 GCC/Clang x86_64 C++ ABI 不匹配?

尝试tooptimizereturnvaluesonx86_64时,我注意到一件奇怪的事情。即,给定代码:#include#include#includeusingnamespacestd;constexpruint64_ta=1u;constexpruint64_tb=2u;pairf(){return{a,b};}tupleg(){returntuple{a,b};}Clang3.8outputsf的这个汇编代码:movl$1,%eaxmovl$2,%edxretq这对于g:movl$2,%eaxmovl$1,%edxretq看起来最佳。然而,当compiledwithGCC6.1

c++ - Clang 和二进制折叠表达式——空参数包的诅咒

特别是Clang3.6.0,目前由Coliru托管。所有这些片段都是从以下位置调用的:intmain(){foo();std::cout以下代码:templatevoidfoo(Args...args){std::cout触发以下编译错误:main.cpp:7:17:error:expected';'afterexpressionstd::cout所以我尝试在表达式周围加上括号:(std::cout它可以工作,但会触发警告:main.cpp:7:6:warning:expressionresultunused[-Wunused-value](std::cout'requestedher

c++ - 模板函数中使用的类的前向声明不是由 clang++ 编译的

有这个代码:classA;templatevoidfun(){Aa;}classA{public:A(){}};intmain(){fun();return0;}g++4.5和g++4.7编译它没有错误。但是clang++3.2(trunk)给出了这个错误:main.cpp:5:6:error:variablehasincompletetype'A'Aa;^main.cpp:1:7:note:forwarddeclarationof'A'classA;^那么根据C++标准,哪个编译器是正确的? 最佳答案 Whichcompileri

c++ - 在头文件中使用未声明的标识符 (Clang)

我正在创建一个函数来读取位于IO.cpp文件中的文件内容:#include"IO.h"#include#includeIO::IO(){//ctor}voidIO::readFile(std::stringfileName){std::ofstreaminputFile;inputFile.open(FileName);inputFile>>fileName.toStdString;inputFile.close();std::cout带头文件IO.h:#ifndefIO_H#defineIO_HclassIO{public:IO();voidreadFile(std::stringi

c++ - 如何构建最新的clang-tidy?

我尝试从sources构建clang-tidy但它提示未定义的CMake命令:CMakeErroratclang-apply-replacements/CMakeLists.txt:5(add_clang_library):UnknownCMakecommand"add_clang_library".CMakeWarning(dev)inCMakeLists.txt:Nocmake_minimum_requiredcommandispresent.Alineofcodesuchascmake_minimum_required(VERSION3.9)shouldbeaddedatthet

c++ - clang-format 打破 lint 注释

我们在C/C++的代码库中使用lint,我也在尝试将clang-format集成到我的工作流程中。不幸的是,lint有时需要注释来忽略特定检查,格式如下:/*lint-[annotation]*/或//lint-[annotation]具体来说,如果注释的开始标记和“lint”之间有空格,它不会将其识别为注释指令。不幸的是,我对clang-format的默认设置将其视为错误并有助于插入空格。有没有什么方法可以让clang-format识别与该模式匹配的评论并让它们不理会?目前我使用的是3.4,但如果需要可以升级。 最佳答案 Clan