我正在使用预处理器#define 宏来计算头文件中的函数数量:
#define __INDEX -1
//First group of functions
void func1(void);
#define __FUNC1_INDEX __INDEX + 1
void func2(void);
#define __FUNC2_INDEX __FUNC1_INDEX + 1
#undef __INDEX
#define __INDEX __FUNC2_INDEX
//Second group of functions
void func3(void);
#define __FUNC3_INDEX __INDEX + 1
void func4(void);
#define __FUNC4_INDEX __FUNC3_INDEX + 1
#undef __INDEX
#define __INDEX __FUNC4_INDEX
//Third group of functions
void func5(void);
#define __FUNC5_INDEX __INDEX + 1
void func6(void);
#define __FUNC6_INDEX __FUNC5_INDEX + 1
#undef __INDEX
#define __INDEX __FUNC6_INDEX
#define __NUM_FUNCTIONS __INDEX + 1
预处理器通过前两组函数就好了,但是当它到达该行时:
#define __FUNC5_INDEX __INDEX + 1
我收到 __INDEX 的“未在此范围内定义”错误。真正令人困惑的是,在第二组函数中[成功地]完成了同样的事情。__FUNC3_INDEX 取 __INDEX + 1 的值。据我所知,任何地方都没有错别字……有什么问题?
我正在使用 g++ 4.8。