gpt4 book ai didi

对函数指针 const 数组进行 C 编译时断言

转载 作者:行者123 更新时间:2023-11-30 19:30:49 25 4
gpt4 key购买 nike

我有这个函数指针常量数组:

const callback_t callbacks[] =
{
func1,
func2,
func3,
func4,
func5
};

我想添加 C 编译时断言以确保 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

最佳答案

你不能。变量值(在本例中是callbacks[0])不能在 C 中的常量表达式中使用。即使变量被声明为 const,也不能使用。

您必须执行运行时断言或检查,或者在数组定义旁边添加大注释,说明 /* func1 必须是第一个! */.

关于对函数指针 const 数组进行 C 编译时断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com