草庐IT

c++ - OCLint ASTMatcher 规则。匹配 NS_ENUM

我正在尝试创建一个匹配typedefenum和typedefNS_ENUM声明的OCLint规则,但收效甚微。我有一个Objective-C文件(TestClass.m),其中包含以下枚举声明:typedefNS_ENUM(NSInteger,TestEnum){TestEnumNone,TestEnumSome,TestEnumAll};typedefenum{othertestvalue=0,othertestvalue1,othertestvalue2}OtherTestEnum;使用此命令转储AST:clang-Xclang-ast-dump-fsyntax-onlyClass

c++ - c++中动态调度的规则是什么?

我想知道动态调度在C++中究竟是如何工作的。为了说明我的问题,我将从一些Java代码开始。classA{publicvoidop(intx,doubley){System.out.println("a");}publicvoidop(doublex,doubley){System.out.println("b");}}classBextendsA{publicvoidop(intx,doubley){System.out.println("c");}publicvoidop(intx,inty){System.out.println("d");}}classCextendsB{publ

c++ - 单一定义规则是否强制创建单个静态函数变量?

例如,考虑这个header:#includetemplatestructA{A(){staticintx;std::couta;如果我有两个不同的C++文件(包括这个文件)怎么办-它会打印两次相同的地址吗?更重要的是,如果x是具有非平凡构造函数的不同类型的对象,是否可以保证它只运行一次? 最佳答案 标准[C++1114.8/2]说Eachfunctiontemplatespecializationinstantiatedfromatemplatehasitsowncopyofanystaticvariable.我假设(并真诚地希望)

C++函数类型模板参数推导规则

使用以下代码构建时clang-Wallmain.cpp-omain.o生成以下诊断信息(在代码之后):templatevoidfun(constF&f){}templatevoidfun(Ff){}doubleTest(doubled){returnd;}intmain(intargc,constchar*argv[]){fun(Test);return0;}诊断:main.cpp:17:5:error:callto'fun'isambiguousfun(Test);^~~main.cpp:2:6:note:candidatefunction[withF=double(double)]

C++ 业务规则表达式解析器/评估

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我正在寻找用C++编写的可移植轻量级库的建议,它们支持数学和业务规则的表达和评估。我了解C++在STL中不提供此类功能。基本要求如下:要评估的表达式将由数字和字符串以及表示数字或字符串的变量组成。一些表达式预计每秒计算多次(1000-2

基于 C++ 的规则引擎

我正在寻找一个好的C++规则引擎。如果有任何基于XML的C++规则引擎,你能告诉我吗 最佳答案 检查CLIPS(最初由NASA开发)它是一个用C编写的规则引擎。多年来一直在不断发展。然而,规则是在类似于规则定义语言的LISP中定义的。它托管在sourceforge上http://clipsrules.sourceforge.net/ 关于基于C++的规则引擎,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 友元声明的复杂范围规则有什么意义?

我最近发现friend声明范围遵循extremelypeculiarrules-如果您有一个尚未声明的函数或类的friend声明(定义),它会在紧邻的命名空间中自动声明(定义),但是非限定和限定查找不可见;但是,友元函数声明通过参数相关的查找仍然可见。structM{friendvoidfoo();friendvoidbar(M);};voidbaz(){foo();//error,unqualifiedlookupcannotfindit::foo();//error,qualifiedlookupcannotfinditbar(M());//ok,thankstoADLmagic}

c++ - 查找与一组规则匹配的所有排列

我得到了N个数字,并为他们应用M个关于他们顺序的规则。规则以一对索引表示,每对(A,B)都表示索引为A的数字(第A个数字)必须在第B个数字之后-它不必在他旁边.Ex:N=41234M=23231Output:1234,4213,4123,2134,2143,2413,1423...Maybethereareevenmore:)该算法应该给我所有不违反规则的可用排列,就像示例中一样-3必须始终在2之后和1之后。我尝试了暴力破解但它没有用(虽然暴力破解应该在这里工作,N在范围(1,8)内。)有什么想法吗? 最佳答案 作为提示。您可以将规

c++ - C++ 中::运算符的规则

我认为::运算符在访问全局范围的情况下可以是一元的。在所有其他情况下,::被视为二元运算符,::运算符的评估规则在N1::N2::N3的情况下::n等同于以下内容:((N1::N2)::N3)::n//Error:::nhasnotbeendeclared但该行无法编译。它很好奇。标准中没有关于nested-name-specifier评估的任何信息。如果nested-name-specified的求值等同于qualified/unqualified-id是很自然的,但它并没有在标准中的任何地方说明这一点。那么我们是否可以假设nested-name-specifier的计算是依赖于实现

c++ - 如何将 "warnings as error"规则添加到 Qt .pro 文件?

当我通常处理C++项目时,我做的第一件事就是在我的编译器上设置“将警告视为错误”。当使用Qt时,qmake会为您生成Makefile,并且不会在编译命令中包含此选项。我很确定有一种方法可以将这样的选项(和其他选项)添加到生成的Makefile中,但我想不通。我该怎么做?我使用Qt的开源版本和g++作为编译器。 最佳答案 您可以使用QMAKE_CXXFLAGS在pro文件中指定编译器标志:QMAKE_CXXFLAGS+=-Werror 关于c++-如何将"warningsaserror"规