首页 > 代码库 > #define #include

#define #include

c语言中include“”的区别 
< >引用的是编译器的类库路径里面的头文件 " "引用的是你程序目录的相对路径中的头文件 假如你编译器定义的自带头文件引用在C:\Keil\c51\INC\下面 则#include<stdio.h>引用的就是C:\Keil\c51\INC\stdio.h这个头文件 不管你的项目在什么目录里,C:\Keil\c51\INC\stdio.h这个路径就定下来了 一般是引用自带的一些头文件:stdio.h、conio.h、string.h、stdlib.h等等之类的。。 假如你的项目目录是在D:\Projects\tmp\ 则#include "my.h" 引用的就是D:\Projects\tmp\my.h这个头文件 一般是用来引用自己写的一些头文件 如果使用" ",它是会先在你项目的当前目录查找是否有对应头文件 如果没有,它还是会在对应的引用目录里面查找对应的头文件 意思就是,使用#include "stdio.h"如果你项目目录里面,没有stdio.h这个头文件,它还是会定位到C:\Keil\c51\INC\stdio.h这个头文件的 

 

在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接

成一个可执行文件时,就会出现大量“重定义”的错误。在头文件中实用

#ifndef #define 

#endif

能避免头文件的重定义。

在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接

成一个可执行文件时,就会出现大量“重定义”的错误。在头文件中实用

#ifndef #define 

#endif

能避免头文件的重定义。  这样一个工程文件里同时包含两个test.h时,就不会出现重定义的错误了。

 分析:当第一次包含

test.h

时,由于没有定义

_TEST_H

,条件为真,这样就会包含(执行)

#ifndef _TEST_H

#endif

之间的代码,当第二次包含

test.h

时前面一次已经定义了

_TEST_H

,条件为假,

#ifndef _TEST_H

#endif

之间的代码也就不会再次被包含,这样

就避免了重定义了。