我在同一时间试图定义和声明一些全局C++常量定义C++数组:声明,并在同一时间
在 constants.h:
#ifdef DEFINE_CONSTANTS
#define DECLARE_CONSTANT(DECL_, VAL_) extern DECL_ = VAL_
#else
#define DECLARE_CONSTANT(DECL_, VAL_) extern DECL_
#endif
namespace Constants {
DECLARE_CONSTANT(const char LABEL[], "SomeText");
DECLARE_CONSTANT(const int REQUEST_TIMEOUT_MS, 5000);
};
在常数。 CPP:
#define DEFINE_CONSTANTS
#include "constants.h"
#undef DEFINE_CONSTANTS
在使用常量我只是包括所有其他文件constants.h
现在,如果我不使用数组初始值设定项,上述工作就好了。然而,当我尝试做这样的事情:
DECLARE_CONSTANT(const int ARRAY[], {0,1,2});
编译 constants.cpp当我因为在初始化逗号错误“混淆”的预处理器,以为有太多的参数DECLARE_CONSTANT(确切的错误取决于编译器)。
有处理这个问题的窍门吗?其他解决方案也很受欢迎。
你为什么使用预处理器。 C++是类型安全的,并有更好的选择 –
@EdHeal,请提出您的解决方案 –
我还没有得到什么你想要实现的线索 –