2016-11-07 51 views
-2

如何使用目录中的preprecessor命令IFNDEF的#ifndef目录HEADERFILE

#ifndef DIR/HEADERFILE_H 
#include "dir/headerfile.h" 
#endif 
+1

使用预处理器允许的字符吗? '#ifndef DIR_HEADERFILE_H' –

+0

你想达到什么目的?预处理器理解文本 - 不是目录结构?一旦文件被#included,它就不会有文件名/目录#defined。 – doctorlove

+0

这是非常有趣的,为什么我得到-2?一些评论首先? –

回答

1

要回答这个问题specicif,在预处理命令一样#ifndef你不能使用目录。

的包括在头文件中后卫经常采取的形式

#ifndef DIRECTORY_HEADERFILE_INCLUDED 
#define DIRECTORY_HEADERFILE_INCLUDED 

//.... contents 

#endif 

要包括标题,然后使用简单

#include "dir/headerfile.h" 

很久以前有人suugested双重包括警卫,或多余的包括警卫,其中你在#include线路之前检查以加快速度,如在question中所述。 c2 wiki还有一些其他信息。

“好编译器让这个成语是不必要的。”

在这两种情况下,tendacny是使用_,而不是/,以形成有效的宏。

1

正如所解释的in this question,只有字母,数字和下划线(a-zA-Z0-9_ )允许使用宏和常量名称。您可以_定义自己的常量替换/

#ifndef DIR_HEADERFILE_H