有没有一个有效的C11程序,表达“C 11”?

编程语言C的名称来源于父语言C和运算符(应该可以说是C),因此C表达式可能自然地出现在C程序中。我想知道您是否可以使用2011年的标准(无扩展)编写一个有效的C程序,并且包含不在引号内和预处理后的表达式C 11(注意:编辑要求,另见答案)。

显然,如果您可以在2011年标准之前用C 98或C 03表达C程序,那么答案是微不足道的。但我不认为这是可能的(虽然我不太了解)。那么可以用C11的新军械库来完成吗?

如果我们要求字符C 11在预处理之后超出任何文字,则为NO – 因为在翻译阶段7,三个令牌将是标识符,并且整数字

前两个令牌是后缀表达式,后者是一个主要的。

没有减少可以包含这两个非终结符的语法,所以包含C11的任何程序都将失败语法分析。

但是,如果您不将字符文字视为字符串,则答案为YES,因为您可以将其包含在宽字符文字中:

int main()
{
    wchar_t x = L'C++11';
}

它不使用预处理器或字符串文字,并且构造需要由标准支持:

The value of a wide-character literal containing multiple c-chars is implementation-defined.

翻译自:https://stackoverflow.com/questions/15816175/is-there-a-valid-c11-program-with-the-expression-c11

转载注明原文:有没有一个有效的C11程序,表达“C 11”?