草庐IT

c++ - 如何在宏后要求分号

所以我正在编写一个库,必须使用-pedantic-ansi-std=c++98-Werror和-Weverything为clang和构建-Wall-Wextra用于gcc,我有这个宏TESTSUITE(X),它旨在像这样在全局范围内使用:TESTSUITE(currenttestsuite);它所做的是使用以下字符串调用一个函数(在程序启动时通过初始化一个虚拟变量):#defineTESTSUITE(name)\staticintANONYMOUS_VARIABLE(SOME_PREFIX)=setTestSuiteName(#name)问题是这会在clang下为-Wglobal-co

c++ - 有意义的诊断信息

看了几个帖子,我觉得很多问题的出现是因为编译器/实现不会多次发出非常有意义的消息(但并非总是如此)。对于错误消息至少非常令人生畏的模板来说尤其如此。一个例子可能是discussiontopic因此,我想了解几点:a)为什么编译器有时无法提供更有意义/有用的错误消息?是纯粹的实际原因还是技术原因,还是有其他原因。(我没有编译器背景)b)为什么他们不能提供对最相关符合C++标准节/节的引用,以便开发人员社区可以更好地学习C++?编辑:引用线程here再举个例子。编辑:引用线程here再举个例子。 最佳答案 根本问题是编译器诊断会处理您没

c++ - 如何解析后跟分号或换行符的条目(boost::spirit)?

在Boost::Spirit中,我如何解析后跟分号或带有可选分号的换行符的条目?示例输入,其中每个条目都是一个int和一个double:121.4;6313.2242356.4;58.1下面是示例代码,仅解析后跟空格的条目:#include#include#include#include#includenamespaceqi=boost::spirit::qi;typedefstd::pairEntry;templatestructMyGrammar:qi::grammar(),Skipper>{MyGrammar():MyGrammar::base_type(entries){ent

c++ - 类声明混淆 - 右大括号和分号之间的名称

classCRectangle{intx,y;public:voidset_values(int,int);intarea(void);}rect;在此示例中,右大括号之后和分号之间的“rect”在此类定义中是什么意思?我很难找到一个明确的解释。另外:不管它是什么,你也可以为结构做吗? 最佳答案 rect是变量的名称(在本例中为对象)。就好像它在说:intrect;除了int之外还有一个新类型的定义,称为CRectangle。通常,类类型单独声明,然后用作CRectanglerect;正如您可能熟悉的那样,但在这样的声明中声明新类型

C++学习头文件。这个分号是怎么回事?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我正在学习制作头文件。这是我的代码(三个独立的文件)//Main.cpp#include#include"functions.h";usingnamespacestd;intmain(){cout代码编译并运行,但困扰我的部分在Main.cpp中。“functions.h”下方和“usingnamespace”上方有分号。我把它放在那里是因为visuals

c++ - 什么时候在 c/c++ 中强制使用 } 之后的分号?

if(...){...}在上面的例子中,;似乎是可选的,在c/c++中什么时候后面的分号是必要的? 最佳答案 inta[2]={1,2},j=5;当使用{}完成数组或结构的初始化时,所有后续变量都在,之后声明。编辑:当您更改问题时;;在class、enum、initialization语法声明之后是强制性的。classA{};//samefor`structenumE{};//enumclass(c++0x)inta[]={1,2};//arrayorobjectinitialization根据@rubenvb的评论:do{}whi

C++ 类、结构、枚举后的分号……没用但编译器仍然会发出错误?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:InC++classes,whythesemi-colonaftertheclosingbrace这是我很长一段时间都想知道的问题,为什么你必须在C++中的类、结构或枚举的右括号后加上分号?更糟糕的(或实际问题),为什么编译器可以简单地发出警告却发出错误?把那个分号放在那里真的很重要吗,为什么?

c++ - C++中花括号后的分号

我最近开始使用vtk包,我看到这种奇怪的符号,它们在结束花括号}之后包含;。这是来自vtkUnstructuredGrid.h的示例//Description://StandardvtkDataSetAPImethods.SeevtkDataSetformoreinformation.intGetDataObjectType(){returnVTK_UNSTRUCTURED_GRID;};这不是必需的,QtCreator在解析代码时也通过说extra;正确地检测到了这一点。我很好奇这可能是什么原因?也许可读性? 最佳答案 正如QtC

c++ - 如何防止 clang-format 在新行中添加单个分号?

我在C++中有这行代码while(fread(pixel_array++,sizeof(byte),3,fp));但是当我使用clang-format时,它会拆分分号并将其添加到新行中while(fread(pixel_array++,sizeof(byte),3,fp));我不喜欢这种风格,我更喜欢保持原来的风格。我应该如何修改我的clang-format配置?谢谢。 最佳答案 clang-format5.0目前无法识别这种类型的循环。不幸的是,从clang-format版本5开始,您将无法获得满足您需要的设置。查找ClangFo

c++ - 在循环/if 括号后检测分号

GCC中是否有任何标志(如clang中的-Wempty-body),可以帮助我检测while/for循环大括号后的分号?有时人类很难发现这些简单的错误。inti=0;for(i=0;i我使用GCC4.7.3和clang3.2-1~exp9ubuntu1。编辑:我还检查编译器是否可以帮助我在“if-else语句”之后找到这些错误。if(i==0){cout有趣的是gcc通过打印警告比clang更有帮助(带有此标志(-Wall-pedantic-Wempty-body):main.cpp:30:9:warning:suggestbracesaroundemptybodyinan‘else’