C语言为什么无法include另一个源代码文件

第一个程序try1

#include<stdio.h>

#include"try2.c"

int main()

{

int i;

scanf("%d",&i);

printf("%d\n",jc(i));

}

第二个程序 try2

#include<stdio.h>

int jc(int a)

{

int b=a;

while(a-->1)

{

b*=a;

}

return b;

}

报错:
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
F:Ctry1.o:try1.c|| undefined reference to `jc'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
想试一下一起编译两个源文件,为什么不成功?

回答:

这我以前也想过,首先你看下这个:http://blog.csdn.net/laojiu_/...

然后再回到你的问题,为何不可以在一个a.c里再包含一个b.c文件呢?我们知道include的作用简单来说就是把该文件内容在include位置全数展开,此时若可以进入.obj链接过程,链接器就会发现有两份b.c文件,一份是b.c自己的,另一份是已包含在a.c里的,这不就是重定义了么。

所以,在一个a.c里再包含一个b.c文件这种做法是错误的,应该包含.h文件。

回答:

extern

#include <stdio.h>

#include "try2.c"

extern int jc(int); // 声明 jc 在外部定义

int main()

{

int i;

scanf("%d",&i);

printf("%d\n",jc(i));

}


图片描述
@刘毅

回答:

因为你没有指定或安装编译器。。。

你大概用的是 Code::Blocks?

http://wiki.codeblocks.org/in... 这里可能对你有帮助。

Code::Blocks 是一个 IDE、Editor,不是一个编译器。

回答:

夏几把扯淡,我用keil uvision5就可以!

回答:

事实上我再试了一次就成功了,谢谢大家。。

以上是 C语言为什么无法include另一个源代码文件 的全部内容, 来源链接: utcz.com/p/195074.html

回到顶部