如何在 C 中声明一个全局外部结构

问题描述 投票:0回答:1

我已经在我的 .h 文件夹中实现了一个全局外部 int ' 外部 INT GLOBAL_RETURNVAL; '

我想知道如何以同样的方式声明一个全局外部结构(得到这个 int 和一个 char * 作为参数)

谢谢

extern int GLOBAL_RETURNVAL

尝试

extern struct S_GLOBAL  { int GLOBAL_RETURNVAL char *PWD };

c struct global-variables declaration extern
1个回答
0
投票

在此声明中

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 };
© www.soinside.com 2019 - 2024. All rights reserved.