草庐IT

RedPanda-CPP

全部标签

c++ - 在 .h 文件或 .cpp 文件中实现类之间的区别

我想知道仅在头文件中声明和实现类与在头文件中对类进行原型(prototype)化并在有效的.cpp文件中实现的常规方法相比有哪些区别。为了更好地解释我在说什么,我指的是正常方法之间的差异://Fileclass.hclassMyClass{private://attributespublic:voidmethod1(...);voidmethod2(...);...};//fileclass.cpp#include"class.h"voidMyClass::method1(...){//implementation}voidMyClass::method2(...){//impleme

c++ - 强制 GCC 将 .cpp 文件编译为 C

我有一个外部提供的.cpp文件。它是C兼容代码和一点C++的混合体。C++代码只是C的包装,以利用C++的特性。它使用#ifdef__cplusplus宏来保护C++代码,这很棒。不幸的是,如果我尝试使用GCC进行编译,由于文件结尾,它会将其视为C++。我知道gcc和g++之间的区别-我不想编译为C++。有什么方法可以强制GCC将此文件视为C文件?我试过使用例如--std=c99,但这会正确产生C99对C++无效的错误。将文件重命名为.c是可行的,但我希望尽可能避免这种情况,因为它是由外部提供的,最好保留原始拷贝。 最佳答案 gcc

c++ - 如何在 cpp 宏中生成换行符?

如何编写扩展为包含换行符的cpp宏? 最佳答案 我正在从事一个大型项目,该项目涉及大量预处理器宏函数来合成任何无法被模板替换的代码。相信我,我熟悉各种模板技巧,但只要没有可以直接创建代码的标准化、类型安全的元编程语言,我们将不得不坚持使用好的旧预处理器及其繁琐的宏来解决一些问题如果没有,则需要编写十倍以上的代码。一些宏跨越多行,在预处理代码中很难阅读。因此,我想到了解决该问题的方法,我想出的是以下内容:假设我们有一个跨多行的C/C++宏,例如在一个名为MyMacro.hpp的文件中//ContentofMyMacro.hpp#inc

c++ - 是否可以在 header 中声明 constexpr 类并将其定义在单独的 .cpp 文件中?

我有一个类Dimension我在Dimension.h文件中定义(就像我的所有类一样):classDimension{public:constexprDimension()noexcept;constexprDimension(intw,inth)noexcept;intwidth;intheight;};我认为我可以像在我所有的类(class)中一样,将定义放在单独的Dimension.cpp中:#include"Dimension.h"constexprDimension::Dimension()noexcept:width(0),height(0){}constexprDimen

c++ - 是否应在头文件或 .cpp 源文件中指定 C++ 函数默认参数值?

我对C++有点陌生。我在设置标题时遇到问题。这是来自函数.hexternvoidapply_surface(int,int,SDL_Surface*,SDL_Surface*,SDL_Rect*);这是来自functions.cpp的函数定义voidapply_surface(intx,inty,SDL_Surface*source,SDL_Surface*destination,SDL_Rect*clip=NULL){...}这就是我在main.cpp中使用它的方式#include"functions.h"intmain(intargc,char*argv[]){apply_surf

c++ - 包括 .cpp 文件

我在here之类的地方阅读过您必须包含.h文件而不是.cpp文件,否则会出现错误。比如main.cpp#include#include"foop.h"intmain(intargc,char*argv[]){intx=42;std::coutfoop.h#ifndefFOOP_H#defineFOOP_Hintfoo(inta);#endiffoop.cppintfoo(inta){return++a;}有效,但如果我将#include"foop.h"替换为#include"foop.cpp"会出现错误(使用DevC++4.9.9.2,window):multipledefinitio

c++ - 未在 Windows 8.1 上构建的 Node 包 - 缺少 Microsoft.Cpp.Default.props

NPM包未在Windows8.1上构建-失败并出现以下错误,errorMSB4019:Theimportedproject"C:\Microsoft.Cpp.Default.props"wasnotfound.Confirmthatthepathinthedeclarationiscorrect,andthatthefileexistsondisk.我已经尝试了以下,设置环境变量VCTargetsPath至C:\ProgramFiles(x86)\MSBuild\12.0\(错误会相应改变,但没有Microsoft.Cpp.Default.props与2012构建工具)。根据thisa

c++ - .cpp 文件和 .h 文件有什么区别?

因为我已经制作了.cpp文件,然后转成.h文件,我能发现的唯一区别就是你不能#包含.cpp文件。我缺少什么区别吗? 最佳答案 C++构建系统(编译器)没有区别,所以都是一种约定。约定是.h文件是声明,.cpp文件是定义。这就是为什么.h文件是#included--我们包含声明。 关于c++-.cpp文件和.h文件有什么区别?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8754

c++ - cpp.react 库的 C++ 源代码中出现奇怪的 "->* []"表达式

这是我在cpp.reactlibrary的文档中找到的C++片段。:autoin=D::MakeVar(0);autoop1=in->*[](intin){intresult=in/*Costlyoperation#1*/;returnresult;};我从未见过->*[]符号。一开始我还以为是打错了,但是在sourcecode中也发现了这样的表达方式:autovolume=(width,height,depth)->*[](intw,inth,intd){returnw*h*d;};这是有效的C++11(或C++14)吗?什么意思? 最佳答案

c++ - 如何通过 cpp 项目文件夹调用 clang-format?

有没有办法为整个cpp项目文件夹调用类似clang-format--style=Webkit的东西,而不是为每个文件单独运行它?我正在使用clang-format.py和vim来执行此操作,但我认为有一种方法可以应用一次。 最佳答案 不幸的是,没有办法递归地应用clang格式。*.cpp只会匹配当前目录中的文件,不匹配子目录。连**/*都不行。幸运的是,有一个解决方案:使用find命令获取所有文件名并将它们通过管道输入。例如,如果要格式化所有.h和递归foo/bar/目录下的.cpp文件,可以这样做findfoo/bar/-inam