草庐IT

header_nav

全部标签

C++ - 在 header 中初始化变量与使用构造函数

关于以下内容,是否有任何理由做一个优于另一个或它们大致相同?classSomething{intm_a=0;};对classSomething{intm_a;Something(intp_a);};Something::Something(intp_a):m_a(p_a){...}; 最佳答案 您发布的两个代码段不完全相同。classSomething{intm_a=0;};在此处指定要在编译时初始化的值,即0。classSomething{intm_a;Something(intp_a);};Something::Somethin

c++ - C++ 和 C 中的 header 保护

在LearnCpp.com|1.10—Afirstlookatthepreprocessor.在Headerguards下,有这些代码片段:添加.h:#include"mymath.h"intadd(intx,inty);减去.h:#include"mymath.h"intsubtract(intx,inty);main.cpp:#include"add.h"#include"subtract.h"在实现headerguard时,提到如下:#ifndefADD_H#defineADD_H//yourdeclarationshere#endif这里的声明可能是什么?而且,intmain(

c++ - 错误 : Class has not been declared despite header inclusion, 并且代码在其他地方编译正常

所以我有一个包含在另一个类中的类,它不断抛出形式为“错误:'ProblemClass'没有被声明的编译错误。文件是这样设置的:#ifndefPROBLEMCLASS_H#definePROBLEMCLASS_H#include#includeclassProblemClass{public:virtualvoidInit()=0;};#endif出现错误的类如下所示:#ifndefACLASS_H#defineACLASS_H#include"problemclass.h"classAClass:publicBase{public:voidDoSomething(ProblemClas

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++ - C++1y 模式下的 Clang >= 3.3 无法解析 <cstdio> header

我有一个项目可以在g++4.8.1和clang>=3.3在c++11模式下正确编译和运行。但是,当我切换到实验性-std=c++1y模式,clang3.3(但不是g++)阻塞通过Boost.Test间接包含的header(所以我自己不能轻易更改它)///usr/include/c++/4.8/cstdio#include//Getridofthosemacrosdefinedininlieuofrealfunctions.//...#undefgets//...namespacestd{//...using::gets;//带有以下错误消息:/usr/lib/gcc/x86_64-li

c++ - 如何使用 include-what-you-use 工具与 CMake 一起检测未使用的 header ?

工具include-what-you-use可用于检测不需要的header。我正在使用CMake对于我的C++软件项目。如何指示CMake在我的软件项目的源文件中自动运行include-what-you-use? 最佳答案 CMake3.3引入了新的目标属性CXX_INCLUDE_WHAT_YOU_USE可以设置为程序的路径include-what-you-use.例如这个CMakeLists.txtcmake_minimum_required(VERSION3.3FATAL_ERROR)add_executable(helloma

c++ - C++ 中相互包含的 header

我是C++新手,但我无法在网上找到这个(很可能是微不足道的)问题的答案。我在编译一些两个类相互包含的代码时遇到了一些麻烦。首先,我的#include语句应该放在宏的内部还是外部?在实践中,这似乎并不重要。但是,在这种特殊情况下,我遇到了麻烦。将#include语句放在宏之外会导致编译器递归并给我“#include嵌套太深”的错误。这对我来说似乎很有意义,因为在调用#include之前没有完全定义任何类。然而,奇怪的是,当我尝试将它们放入其中时,我无法声明其中一个类的类型,因为它无法识别。本质上,这就是我要编译的内容:啊.h#ifndefA_H_#defineA_H_#include"B

c++ - 不推荐使用的 header <codecvt> 替换

有点前景:我的任务需要将UTF-8XML文件转换为UTF-16(当然,带有正确的标题)。所以我搜索了将UTF-8转换为UTF-16的常用方法,发现应该使用中的模板。.但现在是deprecated,不知道新的常见的做同样任务的方法是什么?(完全不介意使用Boost,但除此之外,我更喜欢尽可能接近标准库。) 最佳答案 别担心。根据thesameinformationsource:thislibrarycomponentshouldberetiredtoAnnexD,alongside,untilasuitablereplacementi

c++ - 您对大型项目的首选 C/C++ header 策略?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭5年前。Improvethisquestion在处理大型C/C++项目时,您是否对源文件或头文件中的#include有一些特定规则?例如,我们可以想象遵循以下两条过度规则之一:.h文件中禁止使用#include;由每个.c文件来包含它需要的所有标题每个.h文件都应包含其所有依赖项,即它应该能够单独编译而不会出现任何错误。我认为任何项目之间都需要权衡取舍,但您的项目是什么?你有更具体的规则吗?或者任何支持任何解决方案的链接?

c++ - 常量变量在 header 中不起作用

如果我像这样在标题中定义常量变量...externconstdoublePI=3.1415926535;externconstdoublePI_under_180=180.0f/PI;externconstdoublePI_over_180=PI/180.0f;我收到以下错误1>MyDirectX.obj:errorLNK2005:"doubleconstPI"(?PI@@3NB)alreadydefinedinmain.obj1>MyDirectX.obj:errorLNK2005:"doubleconstPI_under_180"(?PI_under_180@@3NB)alread