struct作为全局变量

时间:2015-03-02 02:09:03

标签: c struct shared-memory

所以如果我们在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吗?在哪里?

1 个答案:

答案 0 :(得分:1)

如果您只使用指向结构的指针,则结构声明不一定是可见的,但它确实需要sizeof(itemB)可见才能工作,或者您可以访问任何结构声明结构成员的名称。

如果多个文件中需要结构定义,那么通常将定义放在一个名为 header 的公共文件中,该文件是需要查看定义的文件的#include d。

可以将定义复制粘贴到需要的地方,但是冒着一个定义被更新而没有另一个定义保持同步的风险,这将违反一个定义规则。