首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

main()怎么引用另一个 .c 文件的函数

2012-12-30 
main()如何引用另一个 .c 文件的函数如题,是#includexx.c 这样么?还有,xx.c中的函数要注意些什么问题,要

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 来过渡就是楼上所说的方法。

 

热点排行