【问题标题】:C++ #include <[filename]> but #include <string> is not a filenameC++ #include <[filename]> 但 #include <string> 不是文件名
【发布时间】:2015-06-10 09:14:29
【问题描述】:

复制:
When can you omit the file extension in an #include directive?


找到后感觉自己聪明了一点:
What is the difference between #include <filename> and #include "filename"?

但在我的代码中,我使用 #include &lt;string&gt;
string 不是有效的文件名,并且尖括号没有放在 "" 中。

这是第三种方式吗包括其他文件或我如何理解这一点?
换句话说,&lt;string&gt; 是什么?

【问题讨论】:

  • “字符串不是有效的文件名”。谁说的?
  • @n.m.有效的文件名不是头文件还是 cpp 文件? (.h 或 .cpp)
  • @NoelWidmer 查看系统(编译器)包含文件夹中的文件。
  • “cpp”并不是你想的那个意思,拜托,如果你想说“C++”,那就输入“C++”,而不是“cpp”,这样可以省去大家的烦恼。回到你的问题,头文件名不必以.h结尾。

标签: c++ include


【解决方案1】:

string 不是有效的文件名

是的。头文件的名称实际上是string。搜索您的包含路径,例如。 g.:

find /usr/include /usr/local/include -name "string"

你会得到一些结果。

【讨论】:

  • 你知道为什么有人会/应该将他们的文件命名为字符串吗?看起来很奇怪,但肯定是有原因的……
  • @NoelWidmer 原因是C++标准说应该叫string
  • 请注意,您绝对应该避免以这种方式命名您自己的文件。它仅针对标准标题进行标准化。从操作系统的角度来看,新的头文件命名方案并不一定意味着标准头文件的文件名没有扩展名。如何处理标准头文件的包含语句是实现定义的。 C++ 系统可能会在不读取文件的情况下添加扩展甚至使用内置声明。然而,在实践中,为简单起见,这些文件大多使用此名称。
  • 我正在阅读 pdf 文件,并在其中找到以下链接:stackoverflow.com/questions/441568/…
【解决方案2】:

什么是文件扩展名?

它们是一些操作系统(通常是 windows)自己的方式来识别文件类型以使用其默认应用程序打开它。 而 Mac 和 Linux 使用 MIME 来识别文件类型。

“MIME”代表多用途 Internet 邮件扩展

所以在这个库的例子中它是一样的。它是使用 MIME 类型制作的,因为我们的 Windows 操作系统除了使用特定的 IDE 之外不需要打开该文件,因此我们保存了文件识别问题。

【讨论】:

    猜你喜欢
    • 2010-09-06
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2023-04-06
    相关资源
    最近更新 更多