如何使用目录中的preprecessor命令IFNDEF的#ifndef目录HEADERFILE
例
#ifndef DIR/HEADERFILE_H
#include "dir/headerfile.h"
#endif
如何使用目录中的preprecessor命令IFNDEF的#ifndef目录HEADERFILE
例
#ifndef DIR/HEADERFILE_H
#include "dir/headerfile.h"
#endif
要回答这个问题specicif,在预处理命令一样#ifndef
你不能使用目录。
的包括在头文件中后卫经常采取的形式
#ifndef DIRECTORY_HEADERFILE_INCLUDED
#define DIRECTORY_HEADERFILE_INCLUDED
//.... contents
#endif
要包括标题,然后使用简单
#include "dir/headerfile.h"
很久以前有人suugested双重包括警卫,或多余的包括警卫,其中你在#include
线路之前检查以加快速度,如在question中所述。 c2 wiki还有一些其他信息。
“好编译器让这个成语是不必要的。”
在这两种情况下,tendacny是使用_
,而不是/
,以形成有效的宏。
正如所解释的in this question,只有字母,数字和下划线(a-z
,A-Z
,0-9
和_
)允许使用宏和常量名称。您可以_
定义自己的常量替换/
:
#ifndef DIR_HEADERFILE_H
使用预处理器允许的字符吗? '#ifndef DIR_HEADERFILE_H' –
你想达到什么目的?预处理器理解文本 - 不是目录结构?一旦文件被#included,它就不会有文件名/目录#defined。 – doctorlove
这是非常有趣的,为什么我得到-2?一些评论首先? –