我想使用C预处理器来计算两个代码位置之间的行数.基本想法是这样的:
#define START __LINE__
static char* string_list[] = {
"some string",
"another string",
...
"last string"
};
#define END __LINE__
#if END - START > 42
#error Too many entries
#endif
Run Code Online (Sandbox Code Playgroud)
当然这不起作用,因为在这种情况下START,END仅仅是对__LINE__宏的重新定义.
我正在玩#和##运算符,但我无法让预处理器进行评估START,END而预处理器正在运行.
我的问题是:这有可能吗?
不能选择在运行时检查数组的大小.
预先感谢任何提示或想法!