C语言中关于文件包函问题.

来源:百度知道 编辑:UC知道 时间:2024/06/21 02:13:22
/* file1 */
#include "stdio.h"
#include "file3.c"
#include "file2.c"

main()
{
printf("file1\n");
fun2();
}
/*file2*/
#include "file3.c"
void fun2()
{
printf("file2\n");
fun3();
}
* file3 */
void fun3()
{
printf("file3\n");
}
程序运行时提示Redeclaration of 'fun3',这是哪出问题了?请高手指教!!

错误:重复声明fun3
在/*file1*/中,#include"file3.c"表明在file1.c里声明file3.c一次
而#include"file2.c"表明在file1.c里声明file2.c一次
在/*file2*/中,#include"file3.c"表明在file2.c里声明file3.c一次
根据分析得出,在/*file1*/里,你总共声明了两次file3.c,故出错。
一般来说,都是在头文件里写#include"*.h",少有#include"*.c"
建议你多看看C多文件程序的书。

#include "stdio.h"

//交换下面两行
#include "file3.c"
#include "file2.c"

main()
{
printf("file1\n");
fun2();
}
/*file2*/
#include "file3.c" //去掉这一行.
void fun2()
{
printf("file2\n");
fun3();
}
* file3 */
void fun3()
{
printf("file3\n");
}

被包含的文件最好用条件编译

#ifndef xxxxxx
#define xxxxxx

*******

#endif