我已经在. h文件中实现了一个外部int,其中extern int GLOBAL_RETURNVAL;.我想知道如何以同样的方式声明外部结构(既包含int又包含char *)。尝试
int
extern int GLOBAL_RETURNVAL;
char *
extern struct S_GLOBAL { int GLOBAL_RETURNVAL; char *PWD; };
kulphzqa1#
在本声明中
声明了一个int类型的对象。对象可以有外部链接。在这个(不正确的)声明中
extern struct S_GLOBAL { int GLOBAL_RETURNVAL char *PWD };
您正在尝试声明类型说明符struct S_GLOBAL。不允许使用存储类说明符(如extern)声明结构类型说明符,除非使用存储类说明符typedef。如果你写个例子
struct S_GLOBAL
extern
typedef
struct S_GLOBAL { int GLOBAL_RETURNVAL; char *PWD; };
则结构声明的数据成员int GLOBAL,_RETURNVAL与对象不同
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 };
1条答案
按热度按时间kulphzqa1#
在本声明中
声明了一个
int
类型的对象。对象可以有外部链接。在这个(不正确的)声明中
您正在尝试声明类型说明符
struct S_GLOBAL
。不允许使用存储类说明符(如extern
)声明结构类型说明符,除非使用存储类说明符typedef
。如果你写个例子
则结构声明的数据成员
int GLOBAL,_RETURNVAL
与对象不同看起来你想在头文件中声明一个结构类型的对象,例如
并且在一些模块中初始化其数据成员
或者可以将该结构声明为
并且结构类型的对象可以被初始化为