#ifndef找不到DIRECTORY HEADERFILE

时间:2016-11-07 13:38:57

标签: c++ include c-preprocessor

如何在preprecessor命令ifndef

中使用目录

示例

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

2 个答案:

答案 0 :(得分:1)

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

#ifndef DIR_HEADERFILE_H 

答案 1 :(得分:1)

要回答特定问题,您不能在#ifndef等预处理程序命令中使用目录。

头文件中的包含警戒通常采用

形式
#ifndef DIRECTORY_HEADERFILE_INCLUDED
#define DIRECTORY_HEADERFILE_INCLUDED

//.... contents

#endif

要包含标题,请使用

#include "dir/headerfile.h"

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

  

“好的编译器不需要这个成语。”

在任何一种情况下,tendacny都使用_而不是/来形成有效的宏。