C语言

函数本质上是全局的,但可以限定函数能否被别的文件所引用。当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。
1 内部函数
如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。
定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:
static  函数类型  函数名(函数参数表)
    {…             …}
关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。
使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。
 2 外部函数
外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:
[extern]  函数类型  函数名(函数参数表)
                       {……}
调用外部函数时,需要对其进行说明:
[extern]  函数类型  函数名(参数类型表)[,函数名2(参数类型表2)……];
例2  外部函数应用。
(1)文件mainf.c
main()
{  extern void input(…),process(…),output(…);      
    input(…);  process(…);  output(…);

(2)文件subf1.c
extern void input(……)              
      {……}
(3)文件subf2.c
extern void process(……)                  
       {……}
(4)文件subf3.c……
extern void output(……)                    
      {……}
例3  数组排序----简单选择排序
file1.c
main()
{
extern void sort(int  array[ ],int  n);
  int a[10],i;
     for(i=0;i<10;i++)
       scanf("%d",&a[i]);
    sort(a,10);
    for(i=0;i<10;i++)
         printf("%d ",a[i]);
    printf("\n");
}
file2.c
void sort(int  array[],int  n)
{    int i,j,k,t;
     for(i=0;i<n-1;i++)
     {     k=i;
        for(j=i+1;j<n;j++)
           if(array[j]<array[k])   k=j;
        if(k!=i)
        {    t=array[i];
             array[i]=array[k];
             array[k]=t;
        }
     }
}
多个源程序文件的编译和连接
(1)一般过程
编辑各源文件 → 创建Project(项目)文件 → 设置项目名称 → 编译、连接,运行,查看结果。
(2)创建Project(项目)文件
用编辑源文件相同的方法,创建一个扩展名为.PRJ的项目文件:该文件中仅包括将被编译、连接的各源文件名,一行一个,其扩展名.C可以缺省;文件名的顺序,仅影响编译的顺序,与运行无关。
注意:如果有某个(些)源文件不在当前目录下,则应在文件名前冠以路径。
(3)设置项目名称
打开菜单,选取Project/Project name,输入项目文件名即可。
(4)编译、连接,运行,查看结果
与单个源文件相同。编译产生的目标文件,以及连接产生的可执行文件,它们的主文件名,均与项目文件的主文件名相同。
注意:当前项目文件调试完毕后,应选取Project/Clear project,将其项目名称从“Project name”中清除(清除后为空)。否则,编译、连接和运行的,始终是该项目文件!
(5)关于错误跟踪
缺省时,仅跟踪当前一个源程序文件。如果希望自动跟踪项目中的所有源文件,则应将Options/Environment/Message Tracking开关置为“All files ”:连续按回车键,直至“All files”出现为止。此时,滚动消息窗口中的错误信息时,系统会自动加载相应的源文件到编辑窗口中。
也可关闭跟踪(将“Message Tracking”置为“Off”)。此时,只要定位于感兴趣的错误信息上,然后回车,系统也会自动将相应源文件加载到编辑窗口中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值