我们可以有多个c文件来为一个头文件定义函数吗?

Can we have multiple c files to define functions for one header file?

C 和 C++ 新手。

我有一个 .h 文件,其中声明了一些函数。 我试图在两个单独的 .c 文件中实现这些功能,但在编译时出现链接器错误。

不允许吗?

是的,这是允许的。这是一个非常简单的例子:

foobar.h:声明 foobar

void foo(void);
void bar(void);

foo.c: 实现 foo

#include <stdio.h>
#include "foobar.h"

void foo(void)
{
  printf("foo\n");
}

bar.c: 实现 bar

#include <stdio.h>
#include "foobar.h"

void bar(void)
{
  printf("bar\n");
}

main.c:使用foobar

#include <stdio.h>
#include "foobar.h"

int main(void) {
  foo();
  bar();
  return 0;
}

编译、链接和运行 gcc:

$ gcc foo.c
$ gcc bar.c
$ gcc main.c
$ gcc -o someprog foo.o bar.o main.o
$ ./someprog
foo
bar
$

$ gcc -o someprog foo.c bar.c main.c
$ ./someprog
foo
bar
$