这种无支架/无支架代码有效吗?

所以我遇到了这段代码:

%:include  int main(int argc, char *argv)  

这是一些编译器错误还是这个我尚未发现的新东西,因为它运行没有任何问题。

此代码使用C有向图,如下所述: http : //en.wikipedia.org/wiki/Digraphs_and_trigraphs#C

C标准(ISO / IEC 9899:201x,Punctuators§6.4.6:3)对此事有这样的说法:

在语言的各个方面,六个令牌

 <: :> <% %> %: %:%: 

表现分别与六个令牌相同

 [ ] { } # ## 

除了他们的拼写。

这是C语言的一个非常禅的小角落。

在过去,终端和键盘通常不支持编程所需的所有字符; 所以引入了有向图和三字母。

我很惊讶任何现代编译器仍然支持它们,但它确实存在。

Digraph ,在C99中推出。

C99 6.4.6标点符号

在语言的各个方面,六个令牌

 <: :> <% %> %: %:%: 

表现分别与六个令牌相同

 [ ] {} # ## 

除了他们的拼写。

这些是标点符号, %:#相同, %>}等相同… C99标准草案第6.4.6标点符号说:

在语言的各个方面,六个令牌67)

  <: :> <% %> %: %:%: 

表现分别与六个令牌相同

  [ ] { } # ## 

它们有时也被称为有向图,如我们在注释67所见:

这些令牌有时被称为“有向图”。