【发布时间】:2017-02-21 12:40:39
【问题描述】:
我正在尝试实现一个通用设置结构,以便在一个地方访问我的应用程序的所有设置。应用程序的每个模块都有自己的设置类/结构。我想在通用设置结构中定义一个具有每个模块设置类型的成员。为了方便起见,我想定义一个 REGISTER 宏,为每个模块设置创建一个新成员。
类似这样的:
struct Settings
{
// I know this is not working
#define REGISTER_SETTINGS(settings) \
settings _##settings = ##settings();
};
struct ServerSettings
{
int port = 8080;
string ip = "0.0.0.0";
};
REGISTER_SETTINGS(ServerSettings);
struct WindowSettings
{
int width = 640;
int height = 480;
string title = "window";
};
REGISTER_SETTINGS(WindowSettings);
最后我的设置结构应该是这样的:
struct Settings
{
ServerSettings _ServerSettings = ServerSettings();
WindowSettings _WindowSettings = WindowSettings();
};
我不知道如何在其中获得宏扩展。
【问题讨论】:
-
在 C++ 中使用宏的一句话指南:不要。
-
您需要从宏中删除分号,对于一个
-
为什么要在结构体中定义宏??
-
您不能从结构定义外部向结构添加成员。