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
之间的代码也就不会再次被包含,这样
就避免了重定义了。
来源:https://www.cnblogs.com/fear-love/p/3808951.html