学了很久的C语言,很多程序还是只有一个main.c,而不懂得如何多文件编程。
常见的程序由多个源文件组成,通常还有一些头文件。源文件包含函数的定义和外部变量,而头文件包含可以在源文件之间共享的信息。
事实上,可以将程序分割成任意数量的源文件。根据惯例,源文件的扩展名必须为.c,其中一个源文件必须是main.c,作为程序的
起点。
分割函数时,把相关的函数和变量分组放到同一个文件中。
#include 使得在任意数量的源文件中
共享一个宏定义或类型定义成为可能。它会
通知预处理器打开指定的文件,并且把它插入到当前文件中。
#include
//C语言自身库头问价
#include “file.h” //所有的其他头文件和自己编写的头文件
两者区别在于后者会先搜寻当前目录,然后搜寻系统头文件所在目录。所以不能把自己定义的头文件用尖括号括起来,这样编译器会直接搜寻系统文件所在目录,显然是找不到头文件的。
#include “/myfiles/file.h” //可以帮助定位头文件
通常最好的做法是不要在#include 指令中包含路径或者驱动器的信息。不然当需要移植到其他电脑甚至是其他系统时,编译会变得很困难。
- #include
- #include
- void func1(); //函数声明
- void func2(); //函数声明
- void func3(); //函数声明
- int main()
- {
- printf(”hello world!
”);
- func1();
- func2();
- func3();
- system(”pause”);
- return 0;
- }
- //函数实现
- void func1()
- {
- printf(”我是函数1
”);
- }
- void func2()
- {
- printf(”我是函数2
”);
- }
- void func3()
- {
- printf(”我是函数3
”);
- }
可以写成一个main.c / stack.c / stack.h
stack.c
#include “stack.h”
void func1(){ printf(“我是函数1
”);}void func2(){ printf(“我是函数2
”);}void func3(){ printf(“我是函数3
”);}
stack.h
void func1();void func2();void func3();
main.c
#include #include #include “stack.h”
int main(int argc, char *argv[]){ func1(); func2(); func3(); system(“pause”); return 0;}
其中,stack.h还可以写成另一种形式
#ifndef STACK_H //使用 #ifndef / #endif 来封闭文件的内容,这样可以保护头文件stack.h#define STACK_H
void func1();void func2();void func3();
#endif STACK_H