我们可以有多个c文件来为一个头文件定义函数吗?
Can we have multiple c files to define functions for one header file?
C 和 C++ 新手。
我有一个 .h 文件,其中声明了一些函数。
我试图在两个单独的 .c 文件中实现这些功能,但在编译时出现链接器错误。
不允许吗?
是的,这是允许的。这是一个非常简单的例子:
foobar.h:声明 foo
和 bar
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:使用foo
和bar
#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
$
C 和 C++ 新手。
我有一个 .h 文件,其中声明了一些函数。 我试图在两个单独的 .c 文件中实现这些功能,但在编译时出现链接器错误。
不允许吗?
是的,这是允许的。这是一个非常简单的例子:
foobar.h:声明 foo
和 bar
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:使用foo
和bar
#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
$