我在同一時間試圖定義和聲明一些全局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,請提出您的解決方案 –
我還沒有得到什麼你想要實現的線索 –