如何在C++项目中设置全局 #define?
How do I set a global #define in my C++ project?
因为我总是很难在C++中找到构造函数,所以我想做这样的事情:
#define constructor
所以我可以打字
constructor ClassName::ClassName() {}
有没有一种好方法可以设置它,以便它对我的项目是全局的,而无需在每个文件中实际定义它?
我应该提到我正在使用Visual Studio,如果涉及到一些特定的内容。
(或者也许还有其他一些类似于override
的关键字可用于构造函数?
这可能是一个坏主意,原因如下:
- 宏可能非常危险。如果你
#define constructor
,源代码中任何地方的标记"构造函数"将被空白空间取代,这可能会非常混乱。如果您在某处有一个名为"constructor"的变量,或者尝试创建一个变量怎么办?如果您包含的标头(包括标准库(具有"构造函数"变量或类型怎么办? - 虽然你可以把一些关键字放在函数上,这些关键字对语义的影响不大,可以作为一个指标,但这些关键词确实做了一些事情,并且有意义的事情会让阅读你的代码的其他人感到困惑。
- 如果您在使用语言时遇到问题,以至于很难找到构造函数,那么您要么使用IDE很差,要么不具备专业使用该语言所需的专业知识,因此显式标记构造函数并不能解决您的真正问题
- 有更好的选择。
在您的问题的评论中提出了一个更好的选择 - 您可以在任何地方使用相同的评论:
class Foo {
Foo(); // constructor
};
现在您可以通过搜索"构造函数"来查找构造函数。如果您希望能够通过搜索找到特定类的构造函数,则可以执行以下操作:
class Foo {
/* constructor */ Foo();
};
如果你坚持这样做,这就是我建议的方法。
另一种方法:
我不建议你这样做。注释方法应该做你想要的,并且不太可能误导阅读你的代码的人或导致意外的语义更改。但是,如果您坚持使用关键字,请使用explicit
关键字。将构造函数标记为"显式"可防止您初始化如下对象:Foo f = {1, 2}
,但不是这样:Foo f{1, 2}
。这很烦人,但不是致命的。
class Foo {
explicit Foo();
}
相关文章:
- Arduino 模块化编程与全局和设置
- 如何为lua_State设置全局C++指针
- 如何在C++项目中设置全局 #define?
- C vs 2017设置全局变量 - 程序仅在调试中使用断点
- C++ 给出编译器错误,将一个(静态)常量全局变量设置为另一个静态常量变量
- 使用 API 而不是全局配置文件设置 OSM 配置选项
- Codelite不使用全局编译设置或项目编译设置
- 设置全局指针
- 存储在全局变量中的函数指针在进入函数时设置为 0,并在退出函数时返回到以前的状态
- 确定函数是否是在没有设置全局变量的情况下调用的
- 如何设置全局容器(C++03)
- 将大小设置为结构类型全局变量时发生编译器错误
- 如何在后台线程上正确设置全局鼠标挂钩
- 从存储在 SPIFFS 中的变量中设置全局对象 ESP8266.
- 在hlsl着色器中设置全局参数的正确方法是什么
- c++lua设置全局变量时出错
- 设置全局区域设置时内存泄漏
- 问:当我有一堆小部件时,如何设置全局mouseReleaseEvent
- 正在尝试使用Redispp在类中设置全局Redis连接
- visualstudio2013-如何在C++中的void中设置全局int