宏与头文件

YPKBxs.jpg

#define用来定义一个宏。

#开头的是编译预处理指令。

在c语言的编译器开始编译之前,编译预处理程序(cpp)会把程序中的宏的名字替换成值。

宏的定义可以做到非常复杂。

头文件

多个.c文件

在一个项目中的多个.c文件是可以一起编译,然后链接起来的,通常.c文件中存放的都是函数。

如果你在一个.c文件中使用了另一个文件中定义的函数,没有函数声明,又恰好用了不同数据类型的参数,在链接的时候是不会发生错误的。

因此通常我们需要一个.h文件来存放函数声明和全局变量。

从.c到可执行文件

.c—>.i—>.s—>.o—>.out

  • .c:源代码文件
  • .i:编译预处理文件
  • .s:汇编代码文件
  • .o:经过汇编得到目标代码文件
  • .out:经过链接等操作得到可执行文件

头文件.h

1
#include<stdio.h>

这行代码很眼熟吧,这里需要注意两点:

  • 有时候我们会说引入了库函数,这种说法是有失偏颇的,stdio.h中都是函数声明,实际上并没有函数定义
  • <>表示到指定目录下去寻找该头文件
1
#include "MAX.h"

我们自己定义的头文件,用" ",表示在同一个项目的文件中寻找

头文件实际上也是文本替换。这就会导致多个文件之间相互include时,有极大可能会发生重定义(redefine)的情况。

#ifndef

1
2
3
4
5
6
#ifndef _MGRAPH_H_
#define _MGRAPH_H_
/*
代码内容
*/
#endif

在头文件中加入这段代码,就可以避免引用时发生重定义,_MGRAPH_H_这个名字,只要能保证你在其它地方不会用到一模一样的名字即可,通常是用头文件的名字加上几个_来避免。

-------------End-------------
梦想总是要有的,万一有人有钱呢?