草庐IT

iphoneos-clang

全部标签

c++ - 是否有可能从 gcc 或 clang 获得 Lexer 输出?

是否可以让clang或gcc显示词法分析阶段的结果? 最佳答案 虽然解析器doespollthelexer如果没有适当的“词法分析阶段”,这并不意味着您不能在词法分析时转储token。这是通过命令完成的:clang-fsyntax-only-Xclang-dump-tokenscode.c 关于c++-是否有可能从gcc或clang获得Lexer输出?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/

c++ - clang/g++ 与私有(private)继承和使用声明的区别

考虑以下代码:#includestructParams{};templatestructBase{intdata()const{return42;}};templateclassD,classP>structMiddle:privateD//mustbe'public'forg++{};structFinal:publicMiddle{usingBase::data;};intmain(){Finalf;std::cout此代码编译成功并打印42clang并在gcc上给我编译时错误'intBase::data()const[withT=Params]'isinaccessible在这种

c++ - Clang (3.6.0) 忽略包含头文件的警告

似乎clang忽略了包含的头文件中出现的警告://what.hppclassWhat{public:What(){intx=x;}};//main.cpp#include#include"what.hpp"intmain(){inty=y;std::cout用g++(4.9.2)编译得到:$g++-dumpversion&&g++-Wall-Wextramain.cpp-omain4.9.2Infileincludedfrommain.cpp:3:0:what.hpp:Inconstructor‘What::What()’:what.hpp:5:17:warning:‘x’isused

c++ - 在 clang 格式的控制语句之后中断

我在我的.clang-format文件中使用了BreakBeforeBraces:Allman,但在控制语句(例如if、for,while,...)没有放在它们自己的行上。//Currently:voidfoo(){while(true){bar();}}//WhatIwant:voidfoo(){while(true){bar();}}I'vereadthat您可以在BraceWrapping中为大括号设置嵌套配置类,但我无法找出正确的YAML语法(以及sublimetext插件的JSON语法),也找不到任何现有示例。有什么办法吗? 最佳答案

c++ - 为派生类专门化 std::hash 在 gcc 中工作,而不是 clang

我正在尝试为派生类专门化std::hash。目前最好的方法是基于thisanswer:#include#include#includenamespacefoo{templateusingfirst=T;structhashable{};structbar:publichashable{};}namespacestd{templatestructhash::value>>>{size_toperator()(constT&x)const{return13;}};}intmain(){std::unordered_setbaz;return0;}使用g++5.2.0编译时没有警告(-Wal

c++ - Boost.Program_options 在 Clang 下没有正确链接

以下初始示例来自Boost.Program_options文档//CopyrightVladimirPrus2002-2004.//DistributedundertheBoostSoftwareLicense,Version1.0.//(SeeaccompanyingfileLICENSE_1_0.txt//orcopyathttp://www.boost.org/LICENSE_1_0.txt)/*Thesimplestusageofthelibrary.*/#includenamespacepo=boost::program_options;#include#includeusi

c++ - 模板参数中是否禁止使用 SFINAE,还是我遇到了 clang 错误?

以下是我在实际代码中遇到的问题的简化版本。精简版:只看gcc.godbolt.org处的代码和错误/长版:继续阅读;)假设我想要一个带有模板参数setting和方法intfunc(int)的类,例如:当setting为false时,func返回其参数当setting为true时,func将其参数加倍最简单的方法是专门化类模板:templatestructA{intfunc(x)const{return2*x;}};templatestructA{intfunc(x){returnx;}};这种方法的问题是,如果我有一堆不依赖于setting的其他方法,我将不得不在两个特化中复制粘贴它们

c++ - clang ASTContext.getParents 总是返回一个空列表

我正在基于示例使用LibTooling为clang4.0编写一个工具ClangASTFrontendActionssample.给定当前语句stmt,我想在AST中获取它的直接父级。所以我尝试使用下面的代码来转储stmt的所有父级(用于测试目的):boolVisitStmt(Stmt*s){coutgetParents(currentStmt);autoit=Context->getParents(currentStmt).begin();if(it==Context->getParents(currentStmt).end())cout();parentStmt->dump();}}

c++ - 在#include <cstdint> 之后使用类型的 Clang++ -fmodules 错误

当使用-fmodules编译时,以下简单的测试用例文件给我一个编译时错误,提示来自Clang的github镜像的“master”,使用如下所示的命令。我想知道这是否是Clang的新实验模块功能的错误——可能是标准库的模块映射实现的问题——或者我做错了什么。如果我添加-fbuiltin-module-map,错误仍然出现到命令。有趣的是,如果我替换stdint.h,错误不再出现对于cstdint.#includeuint64_tfoo;这是我的编译命令,带有错误信息:anhall@leviathan:/Users/anhall/impersonal/code/llvm-reflexpr/

c++ - 未定义对 clang 中函数指针的变量模板的引用,但不是 gcc

#includestaticconstexprboolisSSE2=true;templatestaticvoid(*fp)();templatestaticvoidfoo_c(){std::coutstaticvoidfoo_sse2(){std::cout=foo_sse2;elsefp=foo_c;fp();return0;}我有一个使用变量模板的项目,它本身就是一个指向函数的指针。上面的示例代码在GCC6.3中编译和执行良好,但在clang3.9.1中给出警告和错误。$clang++"Source.cpp"-o"foo.exe"-std=c++14-O2Source.cpp:6