main()如何引用另一个 .c 文件的函数
如题,
是#include"xx.c" 这样么?
还有,xx.c中的函数要注意些什么问题,要加上extern吗?
[解决办法]
可以用
#include "x.c"
假定你有两个文件main.c和x.c
x.c内容如下:
#include <stdio.h>
void func(void)
{
printf("call x.c's func()!\n");
}
那么
main.c的内容可以写成:
#include "x.c"
int main(void)
{
func();
return 0;
}
不过通常会采用下面的结构,将他们组织成3个文件:
x.h, x.c, main.c
内容可能如下:
x.c:
#include <stdio.h>
void func(void)
{
printf("call x.c's func()!\n");
}
x.h:
#ifndef X_H
#define X_H
void func(void);
#endif /* X_H */
main.c:
#include "x.h"
int main(void)
{
func();
return 0;
}
[解决办法]
是#include"xx.c" 这样,但xx.c中的函数不必加上extern,因为函数就是默认的extern。但是在一个规模较大的项目中不能这么做。例如:
//fun1.c
fun1()
{
...
}
//fun2.cc
#include"fun1.c"
fun2()
{
fun1();
....
}
//main.c
#include"fun1.c"
#include"fun2.c"
int main()
{
fun1();
fun2();
}
这样的话连接就会出问题。在预编译时fun1.c文件中的内容会替换#include"fun1.c",fun2.c中的内容会替换#include"fun2.c",从而fun()出现两次。
[解决办法]
#include"xx.c"
然后再其他文件里调用 xx.c 里面的函数。
这样用是可以的。
但是你的 xx.c 里面的函数必须要要加关键字 static 否则会出现重复定义的问题,即使加了 #ifndef 也不行。
最好的方法就是 用一个 xx.h 来过渡就是楼上所说的方法。