草庐IT

strict-prototypes

全部标签

C++:警告:C4930:未调用原型(prototype)函数(是否为变量定义?)

这个问题在这里已经有了答案:Isthereanydifferencebetween`Listx;`and`Listx()`(1个回答)关闭9年前。我有一个没有默认构造函数的类,我创建了一个变量而没有错误地提供参数,但不是一个很好的编译器错误,而是一个链接器错误,我不能'找不到导致它的代码行。最后,我设法找到了导致此问题的代码,然后我才注意到我收到了这个警告:C++:warning:C4930:prototypedfunctionnotcalled(wasavariabledefinitionintended?)奇怪的是当我更改代码时:MyClassfoo();到MyClassfoo;我

c++ - 我如何从 g++ 中获取缺少原型(prototype)的警告?

我目前有一个项目使用g++来编译它的代码。我正在清理代码,我想确保所有函数都有原型(prototype),以确保正确处理诸如constchar*之类的事情。不幸的是,当我尝试指定-Wmissing-prototypes时,g++会提示:g++-Wmissing-prototypes-Wall-Werror-cfoo.cppcc1plus:warning:commandlineoption"-Wmissing-prototypes"isvalidforAda/C/ObjCbutnotforC++谁能告诉我:1)为什么gcc这无效?这是gcc中的错误吗?2)有没有办法打开这个警告?编辑:这

c++ - 使用 Emacs 从 .h 自动插入原型(prototype)函数

如何配置emacs在打开相应的.cc文件时自动插入.h中的原型(prototype)函数? 最佳答案 当我使用成员函数包进行更多C++编码时,我有类似的东西用于执行此操作:(require'member-function);;expandmemberfunctionsautomaticallywhenenteringacppfile(defunc-file-enter()"Expandsallmemberfunctionsinthecorresponding.hfile"(let*((c-file(buffer-file-name(

c++ - 为什么函数原型(prototype)在不需要时包含参数名称?

我一直认为函数原型(prototype)必须包含函数的参数及其名称。不过,我刚刚试了一下:intadd(int,int);intmain(){std::cout成功了!我什至极度谨慎地尝试编译:g++-W-Wall-Werror-pedantictest.cpp它仍然有效。所以我的问题是,如果你不需要函数原型(prototype)中的参数名称,为什么这样做如此普遍?这样做有什么目的吗?跟函数的签名有关系吗? 最佳答案 不,这些不是必需的,而且大多被编译器忽略。你甚至可以在不同的声明中给它们不同的名字;以下是完全合法的:intfoo(

c++ - 使用不遵循 'strict weak ordering' 的比较函数对列表进行排序

我有一个包含10个项目的列表。我想以特定方式对它们进行排序。例如。项目是A1,B,C1,A2,A3,F,G,C2,H,A4规则是C应该总是在A之前B应该总是在A之后所有其他项目应保持其顺序。所以排序后列表应该是这样的顺序C1C2A1A2A3FGHA4B我正在尝试使用C++std::stable_sort()方法来实现这一点。在我的程序中,所有项目都是结构“SItem”的实例,它有一个成员“type”来指示其类别(A、B等)。我的比较函数是这样的boolCompareItems(SItemconst&item1,SItemconst&item2){if(item1.type==A&&it

c++ - C++中的原型(prototype)设计模式和复制构造函数有什么区别

我想知道什么时候应该使用原型(prototype)设计模式。这是我理解的原型(prototype)示例:classPrototype{public:virtualPrototype*clone()=0;...};classConcretePrototype:publicPrototype{public:Prototype*clone()override{...}};//Usage:ConcretePrototypeproto;autoprotPtr=proto.clone();哪里有问题:为什么这比:classObj{public:Obj();Obj(constObj&);Obj&op

c++ - 是否有混合 C 和 C++ 原型(prototype)的内联方式?

我想要一种内联方式来指定哪些原型(prototype)应该包含在C++中。例如:voidArrayList_insert(ArrayList*arrlst,void*data,inti);IS_CPPvoidArrayList_insert(ArrayList*arrlst,char*data,inti);IS_CPPvoidArrayList_insert(ArrayList*arrlst,Buffer*data,inti);目前我在做:#ifdef__cplusplusextern"C"{#endif....CHEADERS..#ifdef__cplusplus}....C++HE

c++ - std::is_sorted 和 strictly less 比较?

我不太明白std::is_sorted算法及其默认行为。如果我们查看cppreference,它表示默认情况下std::is_sorted使用运算符(operator)。相反,我发现使用会很自然。但我的问题是,对于以下数字列表:123345它将返回true,即使3应该是false.这怎么可能?编辑:它似乎比我想象的更糟糕,因为通过了std::less_equal在这种情况下将返回false...当我传递比较器函数时应用的条件是什么? 最佳答案 根据25.4/5:Asequenceissortedwithrespecttoacompa

bazel-可以skylark动作读取命令行标志(strict_java_deps)

我正在努力实施类似的功能StrictJavaDeps对于Rules_scala。我真的很想有能力在运行时配置warn或者error.我似乎还记得Skylark规则无法创建和访问命令行标志,但我不记得它们是否可以访问现有标志?主要区别是现有的已经被解析,因此也许它们也通过某些CTX传递。看答案您想要的标志(strict_java_deps)目前无法通过Skylark提供。没有理由我们不能添加它#3295追踪。对于其他标志,上下文可以访问配置片段,该片段可以访问某些解析的命令行标志。我想你想要什么ctx.碎片,然后使用碎片得到Java碎片,然后从中获得default_javac_flags:#ru

C51单片机开发程序报错 main.c (11) : error C267 : ‘Func‘ : requires ANSI-style prototype

问题C51单片机开发程序报错main.c(11):errorC267:'Func':requiresANSI-styleprototype详细问题问题一问题二问题三可能原因一函数定义声明处(.h文件中)与主函数中函数(函数名/参数类型/返回值类型)不一致解决方案一修改,将两者保持一致,初学者可能会手误写错函数名,建议直接将函数定义声明处(.h文件中)函数名CV至主函数中调用的函数名,确保定义声明处于调用处一致如笔者所列错误一,将函数名由Nieix改为Nixie即可可能原因二调用函数所需的.h头文件引入错误,可能包含.h头文件书写错误,.h头文件于调用函数所需的.h头文件不一致解决方案二对于拼写