2016陕西gdp排名:C语言“文件包含处理”中的参数传递问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/08 14:28:55
在C语言编程过程中,使用“文件包含处理”可以用#include调用一系列.C或.H文件,我想知道在这些.C或.H文件文件中有子程序时,他们之间的参数传递是怎么实现的,时和在一个文件中时的诸如子程序那样的使用(即:void sub(int m,float q)这样的方式)还是这接把文件#include进去(即void sub()不写明括号中的传递变量名)就可以了?
我很困惑,不知如何解决,希望得到各位高手帮助!谢谢!!
注意,我说的是在.C文件中的子程序需不需要在括号中说明传递变量的名称,即用void sub(int m,float q)这样的方式说明,不是在在头文件中引用。谢谢!!
我在网上(一些书里也是这样说的),介绍文件包含处理是:“#include "文件1" 就是将文件1的全部内容复制插入到#include位置,作为一个源文件进行编译。”——那这“#include "文件1"只是起一个复制文件的作用?,仅仅是为了避免重复写代码??——那就不存在什么参数的传递啦???

虽然在头文件中和正常的程序文件中的代码没有本质区别,但是强烈不建议你把实现代码放在头文件中,头文件中一般只适合放需要对外界透露接口的函数声明,公有预编译定义(#define),结构体以及类的声明(非实现),公共类型(typedef),公共枚举(enum),这么做的原因就是防止楼主所说的问题发生。

在.c文件中,一个函数(LZ所说的子程序)需要通过声明和定义2个步骤来实现,而变量的传递是在函数被实现的时候才需要的,函数声明的时候,只是通知编译器该函数返回值,函数名,函数形参的类型,所以声明的时候只需要给出形参的类型就可以了,比如void my_fun(int,int)而函数定义中,必须给出形参名,才可以在函数实现中使用这些形参,话说回来,实现的时候不给名称,你如何在函数中用到这些变量?
#include的作用非常的大,不是仅仅复制文件,避免重复写代码这么简单的,它的灵魂也在于声明和定义分离,如果不这样的话,你使用别人的库还要把别人的源代码也弄来,显然是不可能的呵呵.

非也,至于#include 原本就不是c语言的代码,只不过是当初在设计第一代编译器的时间使用的代码,但是就是只是为了减少代码两,所以从本质上来说只不过是函数调用,但是随着编译器的进步,先前的#incldue一应变成c语言的代码。其实质已经与函数调用类似。但是实质与函数调用还是有所不同的。函数调用有其出口与入口,但是包含头文件却不同,它只是过程调用。