使用#define宏来标准化类声明

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 ),而是让别人更难理解.拒绝吧.