60

我希望能够在我的一个 C 程序中#include 的头文件中创建一组函数。

4

2 回答 2

139
  1. 打开您喜欢的文本编辑器
  2. 创建一个名为whatever.h的新文件
  3. 把你的函数原型放进去

完毕。

示例whatever.h

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

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

示例whatever.c

#include "whatever.h"

int f(int a) { return a + 1; }

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

像这样:

样本.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
$
于 2010-05-14T01:45:35.713 回答
3

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

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

技术上可以在头文件中创建static函数以包含在多个.c文件中。尽管通常不会这样做,因为它违反了在文件中找到代码和在.c文件中找到声明的约定.h

请参阅 C/C++ 中的讨论:头文件中的静态函数,这是什么意思?更多解释。

于 2013-08-28T15:52:15.060 回答