The*_*777 4 c++ class c-preprocessor
我正在为我的一个项目构建一个C++ DLL.我试图标准化类定义的方式.所以不是每次写作:
class __declspec(dllexport) ClassName
Run Code Online (Sandbox Code Playgroud)
我正在构建一个#define宏来简化这个过程:
#define CLASS( cName ) class __declspec(dllexport) cName
Run Code Online (Sandbox Code Playgroud)
但是,当我使用它时,它会给我以下错误:
Error: Expected a ';'
Run Code Online (Sandbox Code Playgroud)
我知道你可以使用#define宏来定义整个类的创建,但是它可以用来定义"类头"吗?
谢谢,
请记住,我正在尝试这样做,因为我们要处理数百个类,所以这些"自动化"将是最有帮助的:)
编辑:
例:
#define CLASS( nClass ) class __declspec(dllexport) nClass
CLASS( APTest )
{ // Here is the error of missing ';'
public:
APTest();
};
Run Code Online (Sandbox Code Playgroud)
Jon*_*ely 14
不要这样做.
C++已经标准化了!
如果您希望其他人阅读您的代码,那么只需用传统的C++编写,而不是一些看起来不同的家庭烹饪方言.习惯了正确的C++语法,它可以更容易地阅读其他人的C++代码.
有意义的是简化__declspec部件,你可以这样做:
#ifdef _WIN32
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT
#endif
class DLLEXPORT APTest
{
// ...
};
Run Code Online (Sandbox Code Playgroud)
你真的不是通过写作让你的生活变得更简单CLASS( APTest ),而是让别人更难理解.拒绝吧.
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |