请问牛人c中#ifndef包含头文件是怎么个用法?看了#ifdef的百科后...
发布网友
发布时间:2024-10-24 09:52
我来回答
共3个回答
热心网友
时间:2024-11-19 00:12
这是为了避免头文件的重复包含所设计的一个用法。
假如,你自己编写的头文件为my.h,里面包含了stdio.h。主函数文件里面包含了my.h,同时也包含了stdio.h,那么stdio.h就被重复包含了,这在c语言里面是一个错误,因为涉及到重复定义的问题,当然stdio.h已经进行了处理,不会出现重复包含的错误。解决的方法就是使用#ifndef的命令。
#ifndef MY_H_H_
#define MY_H_H_
...
...
#endif
以上就是避免头文件被重复包含的格式,MY_H_H_是一个标识符,常用的做法是你的头文件名全部字母大写,并将 . 改成下划线,如果确保安全,可以在后面多加几个_H,在省略号的地方是你头文件的内容。
第一次包含的时候,MY_H_H_没有被定义,所以定义MY_H_H_,然后包含头文件的内容。第二次包含的时候,因为MY_H_H_已经在第一次被定义了,所以就不再包含头文件的内容,这样就达到防止重复包含的目的了。
热心网友
时间:2024-11-19 00:17
防止头文件被重复包含
#include"XXX.H"会把xxx.H拷到包含它的c文件里面
该c文件包含的其他头文件也可能包含xxx.h
这样xxx.h在该c文件中就不止一份了
用了这个之后,如果前面这个宏被定义了,即文件被包含了,就不再包含这段了
另外一种:
#ifndef XXX
#include "XXX.H"
#endif
这种叫条件编译,比如你的代码可以在多种编译器下编译,但是各编译器用的头文件不一样
加这种宏来区分不同的编译条件
这个宏是可以作为编译参数传进来的
如果你用过gcc,makefile之类的东西应该会有所了解
热心网友
时间:2024-11-19 00:11
#ifndef TEST//判断有没有定义TEST,如果定义了就执行语句2 否则执行语句1
语句1
#else
语句2
#endif