【问题标题】:Include header file syntax [duplicate]包含头文件语法[重复]
【发布时间】:2015-07-04 04:54:02
【问题描述】:

阅读各种 C/C++ 代码,我可以说我对这两种在代码中包含头文件的方式感到困惑。

#include <stdio.h>

#include "stdio.h"

一些文本编辑器具有自动完成功能。我大部分时间都被推荐后者。但在各种程序示例中,也建议使用尖括号。

在编写 C/C++ 程序时应该选择哪一个?两者有什么区别?它们是特定语言的吗?

【问题讨论】:

标签: c++ c


【解决方案1】:

不,它们不是特定于语言的。 C 和 C++ 都使用它们。

https://gcc.gnu.org/onlinedocs/gcc-3.1/cpp/Include-Syntax.html

使用预处理包含用户和系统头文件 指令“#include”。它有两种变体:

#include <file>

此变体用于系统头文件。它搜索文件 系统目录的标准列表中的命名文件。你可以预先 使用 -I 选项将目录添加到此列表中(请参阅调用)。

#include "file"

此变体用于您自己程序的头文件。它搜索 对于包含当前文件的目录中名为 file first 的文件 文件,然后在引用目录中,然后在使用的相同目录中 为&lt;file&gt;。您可以将目录添加到报价列表中 带有-i 引用选项的目录。 #include的论点, 无论是用引号还是尖括号分隔,都表现得像 无法识别 cmet 中的字符串常量,并且宏名称 没有展开。因此,#include &lt;x/*y&gt; 指定包含一个 名为x/*y的系统头文件。

但是,如果文件中出现反斜杠,则将它们视为 普通文本字符,而不是转义字符。一个字符都没有 处理适合于 C 中字符串常量的转义序列。 因此,#include "x\n\\y" 指定一个包含三个 反斜杠。 (某些系统将 \ 解释为路径名分隔符。所有 其中也以同样的方式解释/。它最便携使用 只有/。)

如果有任何东西(除了 cmets)在行上是错误的 在文件名之后。

【讨论】:

  • 这里的一些细节是特定于某些实现的(例如在 unix 下),但不是标准要求的。其他系统上的实现以不同的方式做这些事情。
  • 该标准实际上没有提及-I 和当前目录等,甚至不需要作为“真实”文件存在的标头 :-) 整个事情都是特定于实现的。
猜你喜欢
  • 2013-12-23
  • 2020-07-05
  • 2013-04-10
  • 1970-01-01
  • 2018-10-27
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多