首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构作为全局变量

问结构作为全局变量
EN

Stack Overflow用户
提问于 2015-03-02 10:09:03
回答 1查看 74关注 0票数 0

因此,如果我们在main之前声明和定义一个struct,并希望在与此结构位于同一根目录的其他文件中使用此结构,我们是否需要在该文件中再次声明它?特别是我想要共享一个数组的内存,这个数组的元素是结构,所以我需要在另一个文件中使用shm_get,我需要再次声明这些结构吗?

顺便说一下,它是用C语言写的吗?

代码将如下所示:

代码语言:javascript
复制
 typedef struct {
 char y1;
 char y2;
 char y3;
 int x;
 } itemB;

int main(){...
itemB* BufferB;

然后我分享这段记忆

代码语言:javascript
复制
shmem2 = shm_get(542421, (void**)&BufferB, 30*sizeof(itemB));

因此,如果我编写另一个想要共享结构的文件,我知道应该再次声明BufferB,并使用相同的初始键再次调用shm_get,但是我应该再次声明结构吗?在哪里呢?

EN

回答 1

Stack Overflow用户

发布于 2015-03-02 10:41:38

如果仅使用指向结构的指针,则结构声明不必可见,但它必须可见才能使sizeof(itemB)正常工作,或者使您能够按名称访问任何结构成员。

如果在多个文件中需要结构定义,那么通常将该定义放在一个称为头文件的公共文件中,该文件是从需要查看定义的文件中提取的#included。

可以将定义复制粘贴到需要它的任何位置,但这会带来一个定义被更新而另一个定义没有保持同步的风险,这将违反一个定义规则。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28801682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档