所以如果我们在main之前声明并定义一个struct并想在其他文件中使用这个结构,这个结构与这个结构在同一根中,我们是否需要在该文件中再次声明它?特别是我想分享一个数组的内存,其元素是结构,所以我需要在另一个文件中使用shm_get,我是否需要再次声明这些结构?
顺便说一句,是在C
代码将是这样的:
typedef struct {
char y1;
char y2;
char y3;
int x;
} itemB;
int main(){...
itemB* BufferB;
然后我分享内存
shmem2 = shm_get(542421, (void**)&BufferB, 30*sizeof(itemB));
所以,如果我写另一个想要共享BufferB的文件,我知道应该再次声明BufferB并再次调用shm_get使用相同的初始键,但是我应该再声明一个struct吗?在哪里?
答案 0 :(得分:1)
如果您只使用指向结构的指针,则结构声明不一定是可见的,但它确实需要sizeof(itemB)
可见才能工作,或者您可以访问任何结构声明结构成员的名称。
如果多个文件中需要结构定义,那么通常将定义放在一个名为 header 的公共文件中,该文件是需要查看定义的文件的#include
d。
可以将定义复制粘贴到需要的地方,但是冒着一个定义被更新而没有另一个定义保持同步的风险,这将违反一个定义规则。