c - 使全局结构指针可用于多个源文件

标签 c pointers struct scope extern

我在名为 h1.h 的头文件中声明了一个结构,它包含在两个源文件中,c1.cc2.c.

typedef struct
{
    char binary_filename[256];
}programming;

我想为这个结构创建两个变量,device1device2,然后声明两个指向每个变量的指针,programmingPtr1programmingPtr2.

我希望能够访问每个源文件中实例的成员 binary_filename

我对应该在哪里声明这些变量和指针感到困惑。

我应该在 header 中将变量声明为 extern 吗?

我读了this post但它不处理指向变量的指针。

有人可以建议最好的方法吗?

最佳答案

要在多个源文件中使用变量,您需要在所有相关源包含的头文件中声明它们,然后在一个源中定义它们文件。

因此您的 header 将具有:

extern programming device1;
extern programming device2;
extern programming *programmingPtr1;
extern programming *programmingPtr2;

然后在一个源文件中,您将拥有:

programming device1 = { "filename1" };
programming device2 = { "filename2" };
programming *programmingPtr1 = &device1;
programming *programmingPtr2 = &device2;

关于c - 使全局结构指针可用于多个源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45353319/

相关文章:

C 中用字符串初始化的 char 指针 - 谁能给我解释一下每一步

c - malloc 结构指针数组

c++ - 如何在类中定义枚举并从外部使用它

c - 互斥锁定和解锁功能如何防止 CPU 重新排序?

c - 为什么错误: expected expression before '{' token happen when i try to initialize a struct variable

c - 如何在 Linux 中使用 C 通过串行端口连接发送 .gif 文件

c++ - 指向指针的指针和运算符的地址如何工作?

c++ - 在 C++ 中声明一个 const BYTE *

c++ - 为什么 "char"在结构类型中是一个糟糕的编程习惯?

C 跳过 "while"循环?