C语言外部函数和函数调用有大的区别吗???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言外部函数和函数调用有大的区别吗???相关的知识,希望对你有一定的参考价值。

#include"stdio.h"
main()

void add(int c,int d);
void sub(int c,int d);
int a,b;
printf("a= ");
scanf("%d",&a);
printf("b= ");
scanf("%d",&b);
printf("\n");
add(a,b);
printf("\n");
sub(a,b);

void add(int c,int d)

printf("%d+%d=%d\n",c,d,c+d);

void sub(int c,int d)

printf("%d-%d=%d\n",c,d,c-d);


#include"stdio.h"
main()

extern add(int c,int d);
extern sub(int c,int d);
int a,b;
printf("a= ");
scanf("%d",&a);
printf("b= ");
scanf("%d",&b);
printf("\n");
add(a,b);
printf("\n");
sub(a,b);

add(int c,int d)

printf("%d+%d=%d\n",c,d,c+d);

sub(int c,int d)

printf("%d-%d=%d\n",c,d,c-d);

实在想不通有什么意义??
extern关键字有用的必要吗??

外部函数可以在其他文件中调用;一般的函数调用只能调用本文件里的函数,除非引用命名空间。就这么简单。 参考技术A 不能在函数(main)里定义函数.
在外部定义的、声明的东西作用范围是整个文件。内部的作用范围只在该函数内。exturn说明使用外部的变量等,可有可无!

minGW可以在win下调用linux库函数吗?默认情况下

minGW可以在win下调用linux库函数吗?默认情况下

有的可以调用,有的不能调用,但是为了保持最大的兼容性,一些常规操作都是可以的,如:
算点东西,打印出来,就是一些标准c的基本函数
但是涉及到底层,比如驱动一台打印机打印东西,如果标准C中没有相关函数或者不兼容,就不能用了,相关的头文件可能在库文件的头文件中可以找到,但是都是简单定义,会将此类函数忽略,造成链接的时候,无法解析外部变量
所以人们通常都是这样做,涉及底层就用windows的 API函数,而在Linux就用标准的函数,大部分多是UNIX上相似的一些函数

说了这么多,举个例子吧:
你可以用printf();是因为此函数所要做的事,UNIX类(和Linux一样)和Windows都能很容易通过一种相似的方式实现,所以printf()可以在两个平台都能使用。
在UNIX中创建一个文件用一个函数createfile(xx,xx,xx),全部小写,3个参数,而在Windows上,要达到此函数相同功能,就只能用API,CreateFile(xx.xx.xx ....... ),注意大小写,共有7个参数,这两个函数是不同的平台下使用的。
Mingw内就有相关API函数的库文件,参考一下API,就什么事都能做了。
参考技术A 不能,mingw没有cygwin那种能提供一部分linux接口的兼容层
要用linux库函数,可以找找cygwin,不是太特别的那种linux库函数的话cygwin里面可能有。
参考技术B 要看一下是什么样的函数吧。
一般的函数比如包含头文件<pthread.h>线程库里的是可以调用的,但是像linux的内核函数比如包含头文件<linux/**>,minGW里面没有相应的支持,就不能调用了。

以上是关于C语言外部函数和函数调用有大的区别吗???的主要内容,如果未能解决你的问题,请参考以下文章

C语言中static修饰的函数和普通函数的区别

c语言静态函数调用问题

minGW可以在win下调用linux库函数吗?默认情况下

单片机 C语言,如何调用外部自定义函数。

c语言怎么用递归调用函数的方法求n的阶乘?

C语言:采用递归调用函数方法计算Fibonacci数列的前20项