因此,如果我们在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。
可以将定义复制粘贴到需要的任何地方,但这冒着一个定义被更新而另一个定义不保持同步的风险,这将违反一个定义规则。