如何创建C头文件

时间:2010-05-14 01:41:38

标签: c function header-files modular

我希望能够在头文件中创建一个函数集合,我可以在其中一个C程序中使用#include。

2 个答案:

答案 0 :(得分:135)

  1. 打开您喜欢的文字编辑器
  2. 创建一个名为whatever.h的新文件
  3. 将您的函数原型放入其中
  4. DONE。

    示例whatever.h

    #ifndef WHATEVER_H_INCLUDED
    #define WHATEVER_H_INCLUDED
    int f(int a);
    #endif
    

    注意:感谢luke添加了警卫(预处理器命令)。它们避免在同一编译中两次包含相同的头文件。另一种可能性(在评论中也提到)是添加#pragma once但不保证每个编译器都支持它。

    示例whatever.c

    #include "whatever.h"
    
    int f(int a) { return a + 1; }
    

    然后你可以将“whatever.h”包含到任何其他.c文件中,并将它与whatever.c的目标文件链接。

    像这样:

    sample.c文件

    #include "whatever.h"
    
    int main(int argc, char **argv)
    {
        printf("%d\n", f(2)); /* prints 3 */
        return 0;
    }
    

    编译它(如果你使用GCC):

    $ gcc -c whatever.c -o whatever.o
    $ gcc -c sample.c -o sample.o
    

    链接文件以创建可执行文件:

    $ gcc sample.o whatever.o -o sample
    

    您可以测试样本:

    $ ./sample
    3
    $
    

答案 1 :(得分:3)

头文件可以包含任何有效的C代码,因为它们在编译之前由预处理器注入编译单元。

如果头文件包含一个函数,并且被多个.c文件包含,则每个.c文件将获得该函数的副本并为其创建符号。链接器会抱怨重复的符号。

技术上可以在头文件中创建static个函数,以包含在多个.c文件中。虽然这通常没有完成,因为它违反了.c文件中找到代码并且在.h文件中找到声明的约定。

有关详细说明,请参阅C/C++: Static function in header file, what does it mean?中的讨论。