我想用C语言编写(没有特别的味道,比方说c11)一个通用的全局const数组结构,如下面的伪代码:
void * generic[] ={&(struct a va),&(struct b vb)};
现在我想创建一个函数,给定所需结构的位置的id(我打算为每个id使用const,硬编码),将复制它.
因为那copy()
也是通用的(接受一个void *
目的地),它需要知道严格的大小,可能由调用者指定(很多容易出错,他已经需要提供目标结构和正确的id)或者我也会sizeof
为每个结构维护一个正确的并行数组.
有没有办法在编译时自动化sizeof数组的初始化?或者甚至实现某种技巧让用户指定只是将指针传递给没有id的struct,而不必编写专门的get_struct_x()
?
不允许动态分配(alloc()
,局部变量很好),所有struct和generic数组内容在编译时都是已知的.
对不起我的错误解释,随时改进/纠正它.
编辑以澄清:我需要从存储了许多结构类型的数组深层复制已知的结构类型,但相同的类型永远不会重复.我需要从一个通用的get函数中执行它将从不同的线程调用,因此在复制之前和之后将锁定一个互斥锁,并且我希望将所有锁定和转换代码保存在一个点上,以最小化调试和创建更有效的测试.