我有这个const数组的函数指针:
const callback_t callbacks[] =
{
func1,
func2,
func3,
func4,
func5
};
我想添加C Compile-Time断言以确保func1首先放在数组中。 这样的事情:
C_ASSERT(callbacks[0] == func1);
在处理前阶段之后,这将扩展到:
extern char __C_ASSERT__272[( callbacks[0] == func1)?1:-1] __attribute__((unused))
但我收到了编译错误:
error: variably modified '__C_ASSERT__272' at file scope
答案 0 :(得分:0)
你不能。变量值(在这种情况下为callbacks[0]
)不能在C中的常量表达式中使用。即使变量声明为const
,也不会使用。
您必须执行运行时断言或检查,或在数组定义旁边添加大注释/* func1 must be first! */
。