Tyl*_*den 5 c struct declaration extern
我如何声明,而不是定义一个结构,例如在多个文件之间共享的数据。我在定义原语时理解这个想法。因此,例如,我可能有:
extern int myvalue; /* in shared header file */
Run Code Online (Sandbox Code Playgroud)
和
int myvalue = 5; /* in data.c file */
Run Code Online (Sandbox Code Playgroud)
但是,我如何对结构做同样的事情。例如,如果我有以下类型:
typedef struct {
size_t size;
char * strings[];
} STRLIST;
Run Code Online (Sandbox Code Playgroud)
如果我然后使用语句:
STRLIST list;
Run Code Online (Sandbox Code Playgroud)
这既是声明又是定义。那么,如何应用与使用 extern 相同的原则?
声明一个结构体的实例(或指向一个结构体的指针):
extern STRLIST* ptrList;
extern STRLIST list;
Run Code Online (Sandbox Code Playgroud)
要定义它:
STRLIST* ptrList;
STRLIST list;
Run Code Online (Sandbox Code Playgroud)
声明一个结构类型:
typedef struct STRLIST;
Run Code Online (Sandbox Code Playgroud)
要定义它:
typedef struct {
size_t size;
char * strings[];
} STRLIST;
Run Code Online (Sandbox Code Playgroud)
请注意,您可以仅使用声明来使用指向结构的指针,但您必须具有定义才能直接使用该结构。
归档时间: |
|
查看次数: |
4851 次 |
最近记录: |