我有两个不同的描述版本,一个是字符串,另一个是值,例如:
static const char * versionStr = "03-October-2022" ;
static const uint32_t versionVal = 20221003 ;
如何测试它们是否相等(在编译时),以确保没有更新另一个?
纯预处理器智能解决方案,我一定要使用C++98。
相当大的挑战:)
发布于 2022-10-19 17:13:54
你不能在编译时比较它们。但是,您可以做的是为公共元素使用预处理宏来构建值,从而减少出错的可能性,例如:
#define c_day 03
#define c_year 2022
#define c_month 10
#define c_month_name October
#define STRINGIFY(param) #param
#define make_versionStr(y, m, d) (STRINGIFY(d) "-" STRINGIFY(m) "-" STRINGIFY(y))
#define make_versionVal_concat(y, m, d) (y ## m ## d)
#define make_versionVal(y, m, d) make_versionVal_concat(y, m, d)
static const char* versionStr = make_versionStr(c_year, c_month_name, c_day);
static const uint32_t versionVal = make_versionVal(c_year, c_month, c_day);
https://stackoverflow.com/questions/74133293
复制