C语言中怎么调用外部函数?

我在1.c文件中写了
#include<stdio.h>
extern void enter(char str[ ]);
main()
{
char str[30];
enter(str);
printf("%s",str);
}
在2.c中写了
void enter(char str[ ])
{
gets(str);
} 为什么1.c不能调用2.c中国的enter呢?

1、外部函数extern时声明这个函数为外部函数,本文件不做定义,只调用,编译不会出错,但不能运行(没有函数实体)。如果想有运行结果就必须将函数实体包含进来,所以文件包含和extern是配合使用的。文件包含只需要包含.h就是实体的头文件,但有些软件貌似不能识别头文件和c的关系,所以就只能包含.c文件。
2、也就是说外部函数extern只是个声明,他告诉编译器我用到了一个外部函数,但如果该文件没有将函数实体包含进来,编译器是找不到的,依然是不能运行的,所以extern只是个声明,并没有做任何事,只是这样是没用的。include是包含一个文件,就是类似于该文件复制到此处(只是说类似,其实是个查找路径,让编译器去该路径查找函数)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-17
1中是可以调用2的,但是在链接的时候要把2生成的.o文件加进去

生成可执行文件有几步,你需要取了解一下编译和链接的过程,不需要太深入,但是会对你很有帮助。最好不要用现成的IDE去做练习,现实的环境中很多都是使用MAKEFILE去组织编译的,这也有助于更加全面的了解整个系统追问

.o文件如何加?#include“2.o"?

追答

你是在WINDOWS下吗?如果是windows就用CFREE这个编译器。
微软VS会把编译过程对你隐藏,没什么好处。
编译过程
1.c->1.o
2.c->2.o ->a.exe
n.c->n.o

.o文件是生成的中间文件你那边没有调用2.c的函数说明链接过程没有把2.o加入进去

追问

那如何改动呢?编译的时候是没错的,就在链接的时候显示错误,

追答

你是用的哪个IDE ?我很久没用集成IDE了。

第2个回答  2013-09-17
还需要2.h 函数声明void enter(char str[ ]);

1.c 中#include “2.h”追问

2.h? 怎么创建这个2.h?新手。不懂。。

追答

跟创建2.c一个道理,实在不行就创建一个txt文件 改为2.h

第3个回答  2017-12-31
函数分为库函数和自定义函数,在调用库函数时只要标明头文件(所谓头文件就是一个东西,里面包括了一些函数各声明之类的,当你要调用它中的函数时就就得先向程序说明你要调用这个文件里的函数,否则有有侵权行为哦)可以在主调函数中调用这个头文件里的所有函数了,例如头文件为#include<stdio.h>你就可以在主调函数中调用这个头文件里的函数:
main
{ printf("haha");/*这时main函数为主调函数,printf为被调函数*/
}
调用自定义函数时其实和调用库函数一样的,只不过这个函数是你自己定义的,再如:
main
{ void f();/*声明 f()函数*/
f(); /*调用f()函数*/
}
f()
{
printf("haha");/*f()函数调用库函数*/
}
第4个回答  2013-09-17
你用的什么开发工具?2个文件是否都加入到项目中,一起编译连接的?错误信息是什么?追问

Visual C++ 6.0

追答

你确认两个c文件都在vc工程里面吗?没有被标记为排除不编译连接?你说不能调用那是出了什么错误信息呢?

追问

错误信息是Debug/1.exe : fatal error LNK1120: 1 unresolved externals

C语言外部函数函数调用
在C语言中,函数的外部调用是通过在函数声明时使用关键字"extern"来实现的。当你在函数定义的首部,如:c extern int fun(int a, int b);这样标记,表明这个函数fun不是在当前文件内部定义的,而是作为一个外部函数,可供其他文件调用。C语言的规则指出,如果在定义函数时省略了"extern",默认情况下...

C语言中怎么调用外部函数?
1、外部函数extern时声明这个函数为外部函数,本文件不做定义,只调用,编译不会出错,但不能运行(没有函数实体)。如果想有运行结果就必须将函数实体包含进来,所以文件包含和extern是配合使用的。文件包含只需要包含.h就是实体的头文件,但有些软件貌似不能识别头文件和c的关系,所以就只能包含.c文件。

C语言如何调用函数
1、打开CFree,按ctrl加N创建一个新的文件。2、然后开始调用函数。3、按F9进行调试后发现没有错误。4、按F5执行程序。5、输入想要输入的数字。6、按ENTER键输出结果,检验符合结果,说明函数调用成功。

C语言中,是否可以调用其它文件的函数?
1、在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:在A2.c中:有函数void A2(){...};。在A1.c中:在文件前头增加一行:void A2();就可以了。2、把A2.c中完整定义的函数的原型,写到一个A2.h文件中,然后在A1.c的文件头增加#include "A2.h"...

c语言如何 调用外部程序
fe函数名: exec...功 能: 装入并运行其它程序的函数 用 法: int execl(char *pathname, char *arg0, arg1, ..., argn, NULL);int execle(char *pathname, char *arg0, arg1, ..., argn, NULL,char *envp[]);int execlp(char *pathname, char *arg0, arg1, .., NULL);int ...

c语言如何调用另外一个函数?
首先先定义一个函数 然后在主函数中调用 如 定义一个函数比较大小 int max (intx , inty)在主函数中调用c=max(a,b)其中x,y是形参,a,b是实参

单片机 C语言,如何调用外部自定义函数。
C 语言的函数是能相互调用的, 但在调用函数前,必须对函数的类型进行说明,就算是标准库函数也不例外。标准库函数的 说明会被按功能分别写在不一样的头文件中,使用时只要在文件最前面用#include 预处理语 句引入相应的头文件。如前面一直有使用的 printf 函数说明就是放在文件名为 stdio.h 的 头...

C语言中的main函数能不能调用其它函数
可以调用。C语言最基本的模块为函数,任意函数都可以调用其它任意一个函数,包括函数本身。1、自定义函数调用其它自定义函数的例子:include <stdio.h>void fun1(int a)\/\/自定义函数fun1。{ printf("%d\\n",a);}void fun2(int m, int n)\/\/自定义函数fun2。{ fun1(m); fun1(n)...

C语言 外部变量函数的调用
main()中的extem a;改为extem int a; extem用于将用于将其他源文件的函数或变量的作用范围扩大到整个程序。在定义是不需要,只有在应用前用申明语句申明即可,如extern void print(int n);你也没说哪不懂,只能回答这么多了,希望对你有帮助 ...

c语言中怎么调用函数
1、直接调用,这种函数一般没有返回值,或者不需要返回值 如 printf("你好,可以直接调用printf函数的!")2、表达式调用,比如对于用户写的一个求最大值函数int max(int a,int b),一般有返回值 如 c=max(6,9) 也就是要用一个量来接收函数返回来的值。3、参数调用,同样对于上面的max 如...

相似回答