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-char和h-char规格.我认为您没有太多选择,只能更改文件名.
语法是在同一draft C++ standard节2.9 Header names.
在C和C++中,这不是有效的头名,因为它包含>和".
标题名称的语法允许分隔的那些<>包含"除了新行和>" 之外的源字符集的任何成员,并且分隔的那些""包含"除新行和"" 之外的源字符集的任何成员.没有逃逸序列的概念.