欢迎来到天天文库
浏览记录
ID:51687028
大小:42.93 KB
页数:2页
时间:2020-03-15
《C语言之extern外部函数.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、对外部函数的引用性声明一定要遵从原函数定义,尽管可能会通过编译,但实际使用并未遵从函数的本来意图,可能会导致意想不到的bug函数调用的处理是在连接阶段进行的实例分析:外部函数声明于外部文件-----projectfolder-----main.c-----extern_funtion.cmain.c1./*********************************************** 2. * test.c 3. ***********************************************/ 4.int fun (void)
2、; //引用性声明,同:externintfun(void); 5. 6.int main () 7.{ 8. int t ; 9. 10. t = fun(); 11. printf("%d",t); 12. system("pause"); 13. return t; 14.} extern_function.c1./*********************************************** 2. * fun.c 3. *******************************
3、****************/ 4. 5.#include 6. 7.void fun (int n,int b) 8.{ 9. printf("%d %d",5,b); 10.} 这样的引用性声明形式能顺利通过编译吗?回答是肯定的,编译丝毫没有问题,运行结果如下:1)调用的时候并没有向被调用的函数传递参数,实际却有参数传入?2)被调用的函数在定义中并没有返回值,实际却有返回值?为什么呢,这就要知道c函数的参数传递机制了1)调用函数时将进程栈中原本其他含义的变量当做参数传入了,2)返回的时候将栈中或寄存器中原本其
4、他含义的变量当做返回值返回了若这些参数是指针,那,太可怕了!!!!!习惯性的做法是在定义这些外部函数的同时将这些函数的引用性声明置于对应的头文件中(定义的同时并在头文件中声明,出错概率小),当外部文件需要调用该函数时,在调用文件中包含该文件就行了
此文档下载收益归作者所有