C文件的组织

我习惯于在一个C文件中做我所有的编码。但是,我正在做一个足够大的项目,这样做是不切实际的。我已经#include他们在一起,但我遇到的情况下,我包括一些文件多次,等等。我听说过.h文件,但我不知道他们的功能是什么(或为什么有2个文件比1好)。

我应该使用什么策略来组织我的代码?是否可以将“公共”函数与“私有”函数分离用于特定文件?

This问题沉淀了我的探究。 tea.h文件不会引用tea.c文件。编译器是否知道每个.h文件都有相应的.c文件?

您应该将.h文件视为.c文件的接口文件。每个.c文件表示具有一定数量的功能的模块。如果.c文件中的函数被其他模块(即其他.c文件)使用,则将函数原型放在.h接口文件中。通过将接口文件包含在原始模块.c文件和每个其他.c文件中,您需要该函数,您可以将此函数提供给其他模块。

如果你只需要一个函数在某个.c文件(不在任何其他模块),声明其范围静态。这意味着它只能从它定义的c文件中调用。

对于跨多个模块使用的变量也是如此。他们应该在头文件中,他们必须用关键字’extern’标记。注意:对于函数,关键字’extern’是可选的。函数总是被认为是“extern”。

头文件中的包含保护有助于不多次包括相同的头文件。

例如:

Module1.c:

    #include "Module1.h"

    static void MyLocalFunction(void);
    static unsigned int MyLocalVariable;    
    unsigned int MyExternVariable;

    void MyExternFunction(void)
    {
        MyLocalVariable = 1u;       

        /* Do something */

        MyLocalFunction();
    }

    static void MyLocalFunction(void)
    {
      /* Do something */

      MyExternVariable = 2u;
    }

Module1.h:

    #ifndef __MODULE1.H
    #define __MODULE1.H

    extern unsigned int MyExternVariable;

    void MyExternFunction(void);      

    #endif

模块2.c

    #include "Module.1.h"

    static void MyLocalFunction(void);

    static void MyLocalFunction(void)
    {
      MyExternVariable = 1u;
      MyExternFunction();
    }
http://stackoverflow.com/questions/47919/organization-of-c-files

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C文件的组织