草庐IT

strict-prototypes

全部标签

c++ - 我试过 : valgrind, _GLIBCXX_DEBUG,-fno-strict-aliasing;我该如何调试这个错误?

我有一个非常奇怪的错误,我花了几天时间试图弄清楚,所以现在我想看看是否有人有任何意见可以帮助我理解发生了什么。一些背景。我正在从事一个软件项目,该项目涉及使用Boost1.45向Python2.7.1添加C++扩展,因此我的所有代码都通过Python解释器运行。最近,我对破坏了我们的回归测试之一的代码进行了更改。这个回归测试可能对数值波动过于敏感(例如不同的机器),所以我应该解决这个问题。但是,由于此回归在产生原始回归结果的同一台机器/编译器上发生故障,因此我将结果的差异追溯到这段数字代码(可证实与我更改的代码无关):c[3]=0.25*(-3*df[i-1]-23*df[i]-13*

c++ - 为什么在 C++11 中会多次提及 "function prototypes"?当然这些在 C++ 中不存在

C++11标准多次提及“函数原型(prototype)”。没有任何相关特征的定义,但在随机的地方,如:[C++11:3.3.4]中的“函数原型(prototype)范围”(其定义实际上承认它在谈论“函数声明”);[C++11:17.5.1.4/1]中库类型定义子句的编辑描述,脚注175(这似乎指的是C功能);[C++11:20.9.4.3/6]它描述了假设的templatetypenameadd_rvalue_reference::typecreate();作为“函数原型(prototype)”。在[C++11:20.9.6/4]同样的事情;附录[C++11:C.1.7]其中谈到了C中

c++ - 可以将原型(prototype) OOP 视为 C++ 中的范例吗?

你好,考虑以下代码,可以将原型(prototype)OOP分类为C++?#includetemplatestructTestClass:publicBases...{inta;templateTestClass*Create(){returnnewTestClass();}TestClass*Create(){returnnewTestClass();}};structFoo{intfizz;};structBar{intbuzz;};intmain(){TestClassa;a.a=10;a.fizz=20;std::cerrfizz=30;std::cerrfizzCreate()

java - 了解来自 Java 和 C++ 背景的 Javascript 原型(prototype)

我的编程背景主要是Java、C++和C#。我最近开始接触Javascript和Web开发,并且基本掌握了使用Javascript和JQuery来执行操作DOM元素以及我在前端需要的任何其他操作。然而,我似乎无法理解的是在JS中制作原型(prototype)。我已经阅读了几篇关于它的文章和答案,但它对我来说仍然不太有意义。我认为对我来说正确理解它的最好方法是在JS原型(prototype)和C++/Java类之间进行某种比较。所以我的最后一个问题是:我有Java/C++背景,我需要知道什么才能在我的代码中有效地使用原型(prototype)?旁注:类似this的问题谈谈两者之间的哲学差异

C++ 内联函数原型(prototype)

我遇到了一个头文件,其中包含各种内联和常量函数原型(prototype)声明:inlineboolFoo1()const;inlineboolFoo2()const;inlineboolFoo3()const;...我知道inline关键字允许编译器在调用时(可能)扩展函数,但为什么不包括函数体?如果定义包含在头文件中对我来说更有意义:inlineboolFoo1()const{returnm_Foo1;};inlineboolFoo2()const{returnm_Foo2;};inlineboolFoo3()const{returnm_Foo3;};...在原型(prototype

C++ STL:将派生虚拟类用作 std::sort() 的 "Strict Weak Ordering"

我使用std::sort()撞墙了。我有一个纯虚类(名为Compare),方法的调用者派生自该类(名为MyComp)。我将纯虚拟类用于我的API原型(prototype):voidObject::DoSort(Compare&comp){std::sort(this->mKeys.begin(),this->mKeys.end(),comp);}来电者:classMyComp:publicCompare{booloperator()(constRow*r1,constRow*r2){...}}cmp;...obj->DoSort(cmp);Linux上的g++编译器提示:“无法分配类型

c++ - 为什么即使没有任何类声明也需要原型(prototype)?

如果我这样做:Ex1:#includeintmain(){//trytocalldoSomethingfunctiondoSomething();}voiddoSomething(){std::cout我收到编译错误!因为编译不知道什么是“doSomething”。但如果我将doSomething的位置更改为第一位,程序将成功编译。Ex2:#includevoiddoSomething(){std::cout我可以这样声明原型(prototype):Ex3:#includevoiddoSomething(void);intmain(){//trytocalldoSomethingfun

C++ 函数原型(prototype) a\And 变量名与仅数据类型

在C++中声明函数原型(prototype)时有以下区别:voidSomeFunction(intArgument){//Stuff}对比voidSomeFunction(int){//Stuff}基本上我要问的是,为什么在函数原型(prototype)中写一个变量参数名称而不仅仅是数据类型? 最佳答案 编译器在函数声明中不需要参数名称。它是供人类食用的。它们提供了有关函数正在做什么的附加信息。好的函数名称加上好的参数名称可以作为您的方法的即时文档。 关于C++函数原型(prototyp

c++ - 函数原型(prototype) vs 在 cpp 中包含 header

我有做一些工作的功能。啊啊voiddoSomething(intn);A.cpp#include"A.h"voiddoSomething(intn){/*something*/}如果我想在另一个源文件中使用这个函数,最好的选择是什么:1)包含A.hB.cpp#include"A.h"voidanotherTask(){//...doSomething(5);//...}2)或使用前向声明(函数原型(prototype)):B.cppvoiddoSomething(int);voidanotherTask(){//...doSomething(5);//...}关于尽可能多地为类使用前向

c++ - C 并定义一个没有参数的函数原型(prototype)

这个问题是`f(void)`meaningnoparametersinC++11orC?的一个分支几个人已经回答了这个问题并认为在C中,函数原型(prototype)的含义voidfunc()是func是一个什么都不返回(void)的函数,此时参数未知。此外,他们认为可以进行此声明,然后使用一些参数调用该函数,例如:func(1,2,3);所以,我这样做了,我做了一个测试来验证它是否有效,我对此并不感到惊讶。这里是func.c,里面有main()#includeexternvoidfunc();intmain(intac,char**av){func(1,2,3);return0;}这