如何在C中声明外部结构

92vpleto  于 2023-03-01  发布在  其他
关注(0)|答案(1)|浏览(113)

我已经在. h文件中实现了一个外部int,其中
extern int GLOBAL_RETURNVAL;.
我想知道如何以同样的方式声明外部结构(既包含int又包含char *)。
尝试

extern struct S_GLOBAL 
{
    int GLOBAL_RETURNVAL;
    char *PWD;
};
kulphzqa

kulphzqa1#

在本声明中

extern int GLOBAL_RETURNVAL;

声明了一个int类型的对象。对象可以有外部链接。
在这个(不正确的)声明中

extern struct S_GLOBAL  { int GLOBAL_RETURNVAL char *PWD };

您正在尝试声明类型说明符struct S_GLOBAL。不允许使用存储类说明符(如extern)声明结构类型说明符,除非使用存储类说明符typedef
如果你写个例子

struct S_GLOBAL  { int GLOBAL_RETURNVAL; char *PWD; };

则结构声明的数据成员int GLOBAL,_RETURNVAL与对象不同

extern int GLOBAL_RETURNVAL;

看起来你想在头文件中声明一个结构类型的对象,例如

extern struct S_GLOBAL S_GLOBAL;

并且在一些模块中初始化其数据成员

struct S_GLOBAL S_GLOBAL = { .GLOBAL_RETURNVAL = GLOBAL,_RETURNVAL, .PWD = NULL };

或者可以将该结构声明为

struct S_GLOBAL  { int *GLOBAL_RETURNVAL; char *PWD; };

并且结构类型的对象可以被初始化为

struct S_GLOBAL S_GLOBAL = { .GLOBAL_RETURNVAL = &GLOBAL,_RETURNVAL, .PWD = NULL };

相关问题