因此,如果我们在main之前声明并定义一个结构,并想在与该文件位于同一根目录的其他文件中使用该结构,是否需要在该文件中再次声明它?特别是我想共享一个数组,其元素是该结构的内存,因此我需要在另一个文件中使用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,但是我应该再声明一次结构吗?在哪里?

最佳答案

如果仅使用指向该结构的指针,则该结构声明不必是可见的,但是对于sizeof(itemB)起作用或通过名称可以访问任何结构成员,它都必须是可见的。

如果在多个文件中需要结构定义,则通常将定义放置在一个称为标头的通用文件中,该标头与需要查看该定义的文件相距#include d。

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

09-05 00:34