为什么在C++中声明头文件时,空格不被视为空格?

3

当我们在C++中声明头文件时,不推荐在尖括号'<' '>'和头文件名之间插入空格。如果插入空格,则会出现错误。我已经在Xcode和其他各种IDE中尝试过。

// It is perfectly valid ( in c++ )
#include <iostream> 

but 

// It is invalid
#include < iostream >

9
在某些操作系统中,文件名可以包含空格。也许,如果你考虑使用引号的情况会更清晰一些:#include " myfile.h "。使用 <> 而不是引号只是告诉编译器首先检查另一个位置的文件。 - BoBTFish
3
留有空格只是一种非常不好的做法,容易引发各种问题。我认为任何专业开发人员都不会这么做。我们已经习惯使用驼峰式或蛇形命名法来消除文件名中的空格。 - The Quantum Physicist
您可以使用空格,但它会影响文件。"file.h"、" file.h"、"file 1.h"、file.h " 都是不同的文件。作为良好的实践,应避免使用空格,最好用下划线代替。 - user9379842
@HelloWorld 感谢您的帮助,但如果我的文件名中包含空格,我的代码就无法编译。 - DecPK
@PraveenKumar 我们之前说过,“iostream”和“iostream.h”是不同的文件。你必须创建“iostream”头文件才能使用它。 - user9379842
1个回答

10

没有以空格字符开头和结尾的名为iostream的头文件,这就是为什么会出错的原因。

在使用#include时,<>或""中的所有字符都是头文件名称(在大多数实现中它指的是物理文件名)

如果你使用例如#include来包含自己的头文件之一

#include " file.h "

它将寻找一个名为 file.h 的文件(以空格开头和结尾)。

这是与以下任何一个文件名不同的文件名:

#include "file.h "
#include "file.h"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接