C语言大程序结构

在一个项目下的多个c文件可以关联使用比如:

  • main.c文件:
#include<stdio.h>

int max(a,b);

int main()
{
    int a=5;
    int b=6;
    printf("%d\n",max(a,b);
}
  • max.c文件:
double max(double a,double b)
{
    return a+b;
}

在运行时两个文件都不会编译错误,但会运行错误,因为其变量类型声明是不同的。

解决问题的方法是把max函数原型放到头文件(.h)中,在需要max是去引用他:

  • max.h文件:
int max(int a,int b);

并在main.c及,max.c中引用max.h:

#include "max.h"

再次运行,编译器可以发现max.c中的类型错误,编译器能知道max的原型是什么。max.h内的代码插入到include行进行编译。

  • 自己写的头文件以双引号include,编译时会先从当前目录找该头文件,然后从系统找,尖括号直接从系统找

其实stiod.h等头文件中并没有函数的源代码,而只有该函数的原型。

  • 好的编程习惯是,把除了main.c的.c文件都写一个对应的.h声明其原型,全局变量的声明也写入.h,可以在多个.c文件间共享,比如:
//max.c文件下
int gAll=12;
...

//max.h文件下
extern int gAll;

//main.c下

int main()
{
    a=1;
    max(a,gAll);
    return 0;
}
  • 如果在函数前加static,那么该函数只能在这个.c文件中使用
  • 定义和声明不同,声明无具体代码内容(比如宏声明,函数原型,结构声明等),而定义(函数定义,变量)有。
  • 只有声明可以放在头文件中
  • 同一编译单元不要有同名声明,为了避免头文件重复定义,则一般写作标准头文件格式:
#ifndef _MAX_H_
#define _MAX_H_

double max(double a, double b);
extern in gAll

#endif

猜你喜欢

转载自blog.csdn.net/scarletteshu/article/details/100525062