如何在C和/或C++中包含文件

8 c c++ include c-preprocessor

我有一个头文件,我试图包含使用include预处理器目录的另一个源文件.我试图同时使用引用形式和角度形式,但似乎都没有做到这一点.

文件名是.>"hello.h编译器搜索它的目录.我试图像这样包括它:

  • #include <.>"hello.h>
  • #include <.\>"hello.h>
  • #include <.\>\"hello.h>
  • #include ".>"hello.h"
  • #include ".>\"hello.h"

我还尝试了不同的C和C++编译器 - clang,gcc,clang ++和g ++.

显然,上述任何一项都不起作用,否则毫无疑问.

我认为根据标准,这个名字可能不合法.不幸的是,我手边没有C和C++标准规范.我能找到信息的唯一权威来源是该MSDN有关页面#include指令,以及GNU Ç预处理程序文件,在这里.GNU的文档并没有多说,MSDN有以下条款,但是:

path-spec是一个文件名,可选地在目录规范之后.文件名必须命名现有文件.path-spec的语法取决于编译程序的操作系统.

我很好奇C和C++标准对此有何看法?

在哪里可以找到针对C和C++头文件命名要求的特定于操作系统的规则?我对OS X,Linux和FreeBSD特别感兴趣.

为什么转义<和/或"字符不起作用?

我如何包含我的文件?

Sha*_*our 10

我认为你从语法draft C99 standard部分6.4.7 Header names的文件名中运气不好如下:

header-name:
  < h-char-sequence >
  " q-char-sequence "
h-char-sequence:
  h-char
  h-char-sequence h-char
h-char:
    any member of the source character set except
    the new-line character and >
q-char-sequence:
  q-char
  q-char-sequence q-char
q-char:
    any member of the source character set except
    the new-line character and "
Run Code Online (Sandbox Code Playgroud)

你同时拥有">在其中不包括你无论从文件的名称q-charh-char规格.我认为您没有太多选择,只能更改文件名.

语法是在同一draft C++ standard2.9 Header names.


Mik*_*our 5

在C和C++中,这不是有效的头名,因为它包含>".

标题名称的语法允许分隔的那些<>包含"除了新行和>" 之外的源字符集的任何成员,并且分隔的那些""包含"除新行和"" 之外的源字符集的任何成员.没有逃逸序列的概念.