草庐IT

CPP-SCNUOJ-Problem

全部标签

c++ - 始终为 C++ 项目中的每个 .h 创建一个 .cpp 是一种好习惯吗?

有些类,如异常或模板,只需要头文件(.h),通常没有与它们相关的.cpp。我看到有些项目(对于某些类)没有任何与头文件关联的.cpp文件,可能是因为实现太短以至于直接在.h中完成,或者可能出于其他原因,例如模板类,必须在header中包含实现。您有什么看法,如果类太短,我是否应该避免创建.cpp文件并直接在头文件中编写代码?如果代码写在头文件中,我是否应该包含一个空的.cpp,以便项目中的文件保持一致? 最佳答案 我不会添加不必要的.cpp文件。您添加的每个.cpp文件都必须编译,这只会减慢构建过程。一般来说,使用您的类只需要头文件

c++ - 让 doxygen 知道 cpp 中的命名空间

我们有一个c++项目,我们使用doxygen进行记录,只在类的header中放置doxygen注释,我们在cpp中记录静态函数。我们的doxygen配置文件收集项目中的任何头文件/hpp)/实现/cpp)文件。此外,我们在namespace内隔离了相当多的独立组件(和外部组件)。项目是以我们使用多态的方式完成的(由于广泛使用代理模式)作为一种常见的做法,我们禁止在header中使用using指令,而是在实现文件中使用它。通常,我们在header中有:/***@brief*testfromA*/voidf(N1::N2::A);/***@brief*testfromA*/voidf(N1

c++ - 将过滤器中的所有 .cpp 和 .h 移动到另一个项目并更正它们的文件夹位置

这是SolutionExplorer中显示的我在VisualStudio中的项目的过滤器:-ProjectName1==References,ExternalDependencies,HeaderFiles,ResourceFiles==SourceFiles====myFilter01------K.h(systemfolder=`D:\ProjectName1\K.h`)------K.cpp(systemfolder=`D:\ProjectName1\K.cpp`)====myFilter02======subFilter2_1---------B.h(systemfolder=

c++ - 严格指针别名 : any solution for a specific problem?

我遇到了违反严格的指针别名规则引起的问题。我有一个来自模板的类型T和一些相同大小的整数类型Int(与sizeof一样)。我的代码主要执行以下操作:Tx=some_other_t;if(*reinterpret_cast(&x)==0)...因为T是一些可以有构造函数的任意(除了大小限制)类型,我不能将T和Int。(这仅在C++0x中允许,甚至还不被GCC支持)。有什么方法可以重写上述伪代码以保留功能并避免违反严格的别名规则吗?请注意,这是一个模板,我无法控制T或some_other_t的值;分配和后续比较确实发生在模板代码中。(郑重声明,如果T包含任何位字段,则上述代码在GCC4.5上

c++ - 如何在 Doxygen 注释中包含 .cpp 文件的子集?

我正在尝试编写一些Doxygen注释block,并且我想包含示例代码片段。当然,我希望示例能够实际编译,这样它们就不会过时。我的example.cpp(我\include在.h文件中)看起来像这样:#include"stdafx.h"#include"../types_lib/Time_Limiter.h"#includevoidtl_demo(){//scarcewillbeagatetocontrolsomeresourcethatshouldn'tgetcalled//morethan10timesasecondTime_Limiterscarce(10);//here'sabu

c++ - 如何使#include-file 的内容成为 cpp 文件中的编译时常量?

我有一个文件module.hppstructModuleBase{virtualvoidrun()=0;};和一个main.cpp程序intmain(){cout我可以在...?...放什么来让头文件的内容打印在这里?一个基本的想法是intmain(){staticconststringcontent=R"(#include)";cout但多行字符串仅在C++11中可用,#include是否不能在多行字符串中工作(这很好)?如果gcc有一个不可移植的方法...那将是一个开始。澄清(更新):替换应该在编译时完成。 最佳答案 我所知道的

C++ STL 优化警告 : problem with the code or something more sinister?

我有一个正在开发的程序,我正在从使用数组切换到使用vector,但我遇到了问题。我将其简化为:#includeclassA{public:A(void);~A(void);private:std::vector>a;};A::A(void):a(){}A::~A(void){}这从g++(标志:-O2-Wunsafe-loop-optimizations,版本4.4.3(Ubuntu4.4.3-4ubuntu5)在Ubuntu10.04x86_64上)发出以下警告:/usr/include/c++/4.4/bits/STL_construct.h:在析构函数‘A::~A()’中:/us

c++ - CPP : avoiding macro expansion of a macro function parameter

我想做的(为了记录目的)是这样的:编写这段代码是为了说明我的问题,实际代码很复杂,是的,即使在C++上我也有充分的理由使用宏=)#defineLIB_SOME1#defineLIB_OTHER2#defineWHERE"atfile#a,line#l,function#f:"//(lookforsyntaxhightlightingerroratSOxd)#defineLOG_ERROR_SIMPLE(ptr,lib,str)ptr->log("ERROR"str\"atlibrary"#lib);#defineLOG_ERROR(ptr,lib,str)LOG_ERROR_SIMPL

xamltypeinfo.g.cpp 中的 C++ 编译器错误

我一定遗漏了一些明显的东西,但我不确定是什么。我创建了一个空白的C++Metro应用程序,并且刚刚添加了一个模型,我将在我的UI中绑定(bind)到该模型,但是我收到了一系列与xamltypeinfo.g.cpp,我不确定我错过了什么。我的头文件是这样的:#pragmaonce#include"pch.h"#include"MyColor.h"usingnamespacePlatform;namespaceCppDataBinding{[Windows::UI::Xaml::Data::Bindable]publicrefclassMyColorsealed:Windows::UI::

php出现SSL certificate problem: unable to get local issuer certificate的解决办法

当在本地使用curl或者一些其它封装好的http类库或组件(如php界知名的http客户端Guzzle)需要访问https时,如果本地没有配置证书,会出现SSLcertificateproblem:unabletogetlocalissuercertificate的报错信息。解决办法一(环境配置方面)①、下载pem文件②、将文件拷贝到任意目录下,这里我拷贝到了D:/Visual-NMP-x64/Bin/PHP/php-7.4.13-nts-x64目录下③在php.ini配置文件中,配置curl.cainfo配置项的值例如我这里配置为:curl.cainfo=“D:/Visual-NMP-x64