#include指令中文件名的有效字符

时间:2016-03-14 01:03:21

标签: c++ c c-preprocessor

#include指令中文件名的有效字符是什么?

在Linux下,例如,我可以使用除/\0之外的任何字符来获得有效的文件名,但我希望C预处理器对文件名的限制更多我可以包括。

1 个答案:

答案 0 :(得分:4)

在C ++中,源字符集在[lex.charset]中定义:

  

基本源字符集由96个字符组成:空格字符,表示水平制表符的控制字符,垂直制表符,换页符和换行符,以及以下91个图形字符:14

     

a b c d e f g h i j k l m n o p q r s t u v w x y z

     

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

     

0 1 2 3 4 5 6 7 8 9

     

_ {} []#()< > %:; 。 ? * + - / ^& | 〜! =,\" '

#include s的语法是源字符集中的任何内容,除了会混淆#include解析的字符:换行符和> / "取决于( [lex.header]):

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 new-line and >
q-char-sequence:
    q-char
    q-char-sequence q-char
q-char:
    any member of the source character set except new-line and "

所以这样的事情完全罚款:

#include <hel& lo% world$@-".h>
#include ">.<>."

对于某些定义&#34;完美&#34;无论如何...