我的头文件中有一个已定义的原始数据(自动生成),如下所示:
@import 'source/lib/_lib.less'; // Global lib
@import 'source/_sources.less'; // Theme styles
@import 'source/_components.less'; // Components styles (modal/sliding panel)
body{background:#f00}
目的是在编译时检查RAW_DATA的特定参数,如果错误则抛出#error。
例如,在编译期间,预处理器应该检查RAW_DATA的第二个参数(在这种情况下是0x20)是否真的是0x20,如果它没有抛出#error。
主要问题,如何访问已定义的RAW_DATA中的特定参数,是否有可能?
P.S。我在C中使用Keil编译器。
答案 0 :(得分:4)
#define RAW_DATA 0x11, 0x20, 0x55, 0x00, x044
#define X_GET_SECOND_PAR(par) GET_SECOND_PAR(par)
#define GET_SECOND_PAR(p1,p2,p3,p4,p5) p2
#if X_GET_SECOND_PAR(RAW_DATA) != 0x20
#error "2nd parameter shall be 0x20"
#endif
用于特定参数检查。它不优雅。
答案 1 :(得分:2)
定义像这样的宏
#defined RAW_DATA 0x11, 0x20, 0x55, 0x00, x044
#define RAW_DATA_PARAM_1(param1,param2,param3,param4,param5) param1
#define RAW_DATA_PARAM_2(param1,param2,param3,param4,param5) param2
#define RAW_DATA_PARAM_3(param1,param2,param3,param4,param5) param3
#define RAW_DATA_PARAM_4(param1,param2,param3,param4,param5) param4
#define RAW_DATA_PARAM_5(param1,param2,param3,param4,param5) param5
#if RAW_DATA_PARAM_1(RAW_DATA) != 0x11
#error "wrong raw data param 1"
#elif RAW_DATA_PARAM_2(RAW_DATA) != 0x20
#error "wrong raw data param 2"
#elif RAW_DATA_PARAM_3(RAW_DATA) != 0x55
#error "wrong raw data param 3"
#elif RAW_DATA_PARAM_4(RAW_DATA) != 0x00
#error "wrong raw data param 4"
#elif RAW_DATA_PARAM_5(RAW_DATA) != 0x44
#error "wrong raw data param 5"
#endif