草庐IT

c++ - GCC 拒绝使用 enum-base 的简单声明; clang 接受它——这是正确的吗?

GCC4.9.2不编译此代码段,但clang3.5.0做。哪一个是正确的?enumF:int{x,y,z};intF;enumF:intf=F::x;GCC输出:main.cpp:3:12:error:expected';'or'{'before'f'enumF:intf=F::x;^main.cpp:3:12:error:expectedclass-keybefore'f'main.cpp:3:14:error:invalidtypeindeclarationbefore'='tokenenumF:intf=F::x;^main.cpp:3:16:error:'F'isnotacla

c++ - Lambda 捕获和具有相同名称的参数 - 谁会影响另一个? (clang vs gcc)

autofoo="You'reusingg++!";autocompiler_detector=[foo](autofoo){std::puts(foo);};compiler_detector("You'reusingclang++!");clang++3.6.0和更新版本输出“你正在使用clang++!”并警告捕获foo未被使用。g++4.9.0和更新版本输出“你正在使用g++!”并警告参数foo未被使用。这里哪个编译器更准确地遵循C++标准?wandboxexample 最佳答案 更新:正如核心主席在底部报价中所promise

c++ - 在 CMake 中,如何测试编译器是否为 Clang?

我们有一组cross-platformCMakebuildscripts,并且我们支持使用VisualC++进行构建和GCC.我们正在试用Clang,但我不知道如何使用我们的CMake脚本测试编译器是否为Clang。我应该测试一下编译器是否是Clang?我们目前正在使用MSVC和CMAKE_COMPILER_IS_GNU分别测试VisualC++和GCC。 最佳答案 可靠的检查是使用CMAKE__COMPILER_ID变量。例如,检查C++编译器:if(CMAKE_CXX_COMPILER_IDSTREQUAL"Clang")#us

c++ - OS X 上的 LLVM 与 clang

我有一个关于OSX上的llvm、clang和gcc的问题。llvm-gcc4.2、llvm2.0和clang有什么区别?我知道它们都建立在llvm上,但它们有什么不同?llvm除了编译速度更快之外,相比gcc还有什么优势? 最佳答案 LLVM最初代表“低级虚拟机”,但现在它只代表它自己,因为它已经发展成为不同于传统虚拟机的东西。它是一组库和工具,以及标准化的中间表示,可用于帮助构建编译器和即时编译器。除了自己的中间表示之外,它不能编译任何东西;它需要一个特定于语言的前端才能做到这一点。如果人们只提到LLVM,他们可能只是指低级库和工

c++ - 我的 Linux 开发项目的 Clang vs GCC

我在上大学,我们在一个项目中使用C。我们探索了GCC和Clang,而Clang似乎比GCC更加用户友好。因此,我想知道在Linux上使用C和C++进行开发时,使用clang而不是GCC有什么优点或缺点?在我的情况下,这将用于学生级别的程序,而不是生产。如果我使用Clang,我应该使用GDB进行调试并使用GNUMake,还是使用其他调试器和make实用程序? 最佳答案 编辑:gcc的家伙确实提高了gcc的诊断体验(啊比赛)。他们创建了一个wiki页面来展示它here.gcc4.8现在也有很好的诊断功能(gcc4.9x添加了颜色支持)。

c++ - 使用 CMake、Clang 和 Ninja 在 Windows 上构建 c++ 项目

我目前在Windows上安装了cmake、clang和ninja。我正在尝试使用CMake生成一个ninja构建文件来编译一个非常简单的helloworld程序。我的CMakeLists.txt看起来像这样:cmake_minimum_required(VERSION2.8)project(test_project)add_executable(mainmain.cpp)main.cpp是一个简单的helloworld程序。在命令行我运行这个:cmake-GNinja..我得到以下错误:--TheCcompileridentificationisClang3.5.0clang.exe:

python - LLVM clang 的 CMake 构建失败并显示 "Unexpected failure executing llvm-build: Traceback (...) import llvmbuild"

我想构建LLVMclang编译器,但CMake最终出现以下错误消息:CMakeErroratCMakeLists.txt:256(message):Unexpectedfailureexecutingllvm-build:Traceback(mostrecentcalllast):File"C:/.../llvm/utils/llvm-build/llvm-build",line3,inimportllvmbuildFile"C:\...\llvm\utils\llvm-build\llvmbuild\__init__.py",line1,infrommainimportmainImp

c++ - 如何告诉 CMake 在 Windows 上使用 Clang?

我有一个使用CMake构建的C++项目。我通常在OSX上构建,但现在我正在尝试让Windows版本也能正常工作。出于兼容性原因,我想在Windows上使用Clang。我从LLVM安装了预编译的Clang3.8二进制文件:C:\ProgramFiles\LLVM\bin\clang.exeC:\ProgramFiles\LLVM\bin\clang++.exe它也安装在我的PATH上:>clang++clang++.exe:error:noinputfiles我有两个问题:当我调用cmake--build时,如何告诉CMake使用clang++?在构建CMake配置的编译器之前如何检查?

c++ - clang-format:总是打破所有参数,每行一个

我希望我的函数原型(prototype)/定义始终将参数分离到单独的行中,而不管总长度如何。一个带有选项的默认.clang-formatBasedOnStyle:ChromiumAlignAfterOpenBracket:'AlwaysBreak'BinPackArguments:'false'BinPackParameters:'false'ColumnLimit:'80'给出以下格式voidfoo(floata,floatb);voidfoo(floata,floatb,floatc,floatd,floate,floatf,floatg);voidfoo(floata,float

objective-c - 什么clang-format选项控制方法调用参数的格式?

我知道人们对如何在Objective-C中格式化方法调用有不同的看法,即[selfpresentViewController:scanViewControlleranimated:YEScompletion:nil];对比[selfpresentViewController:scanViewControlleranimated:YEScompletion:nil];我使用.clang格式文件中的哪些选项来控制这种缩进?(如果我不想要它,冒号排队等)另外,只是我还是这个格式化程序对block一无所知?注意成功block的if语句没有缩进,失败block中的NSLog函数也没有缩进。[se