我正在使用数据类型的抽象进行编程。这意味着在我的头文件中,我声明了我的struct指针及其相关函数,如下所示:
application.h
typedef struct APPLICATION_Context *APPLICATION_Context;
extern APPLICATION_Context appContextConstruct;
extern void appContextAddMember(int member);
并在源文件中:
application.c
#include "application.h"
struct APPLICATION_Context{
int member0;
int member1;
int member2;
};
extern APPLICATION_Context appContextConstruct;
这个设置有两个问题:
为什么在标题中,我不必将typedef'd结构声明为extern?它也应该在标题之外可见!
我是否需要在源文件中重复'extern'关键字?
答案 0 :(得分:1)
为什么在标题中,我不必将typedef' d结构声明为extern?它也应该在标题之外可见!
任何包含标题的文件都可以看到typedef。不要将typedef与变量声明混淆。
事实上,您根本不需要使用extern
,这是一个应该避免的关键字,因为这意味着您使用的是全局变量,这是一个糟糕的设计。
extern
在函数原型之前是多余的。
另外,永远不要隐藏typedef后面的指针。