我有一个结构体包含如下声明:
I have a struct that contains a declaration like this one:
void (*functions[256])(void) //Array of 256 functions without arguments and return value
还有一个函数我想要定义它,但是有256个函数!我可以做这样的事情:
struct.functions[0] = function0;
struct.functions[1] = function1;
struct.functions[2] = function2;
诸如此类的操作太过繁琐,我想问一下有没有类似这样做的方法?
struct.functions = { function0, function1, function2, function3, ..., };
编辑:如 Chris Lutz 所说,语法错误已经被更正。
assert(sizeof(the_struct.functions) == sizeof(functions))
或类似方式实现。 - Lundinsizeof(some_struct)
返回结构体的大小+任何必要的填充。例如,请参见这个问题。上面使用memcpy
是正确的。 - Matstruct
是一个关键字,因此即使是用于永远不会接近编译器的示例代码,将其用作变量名也是错误的。 - Chris Lutzfunc()
和func(void)
之间的区别只是C++
的问题,而不是C的问题,对吗? - dhein