C编程抽象 - typedef外部声明

时间:2015-12-02 07:22:36

标签: c struct abstraction

我正在使用数据类型的抽象进行编程。这意味着在我的头文件中,我声明了我的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;

这个设置有两个问题:

  1. 为什么在标题中,我不必将typedef'd结构声明为extern?它也应该在标题之外可见!

  2. 我是否需要在源文件中重复'extern'关键字?

1 个答案:

答案 0 :(得分:1)

  

为什么在标题中,我不必将typedef' d结构声明为extern?它也应该在标题之外可见!

任何包含标题的文件都可以看到typedef。不要将typedef与变量声明混淆。

事实上,您根本不需要使用extern,这是一个应该避免的关键字,因为这意味着您使用的是全局变量,这是一个糟糕的设计。

extern在函数原型之前是多余的。

另外,永远不要隐藏typedef后面的指针。