©
This document uses PHP Chinese website manual Release
如最初公布的那样,C11 不允许结构和工会成员使用 alignas 规范; 这由 DR 444纠正了。
在 C ++中,说明alignas
符也可以应用于类/结构体/联合体类型和枚举的声明。这在 C 中不受支持,但可以通过在成员声明中使用 alignas 来控制结构类型的对齐方式(自 DR 444起)。
_Alignas
.
| Primary | Alternative |
| && | and (macro constant) |
| &= | and_eq (macro constant) |
| & | bitand (macro constant) |
| | | bitor (macro constant) |
| ~ | compl (macro constant) |
| ! | not (macro constant) |
| != | not_eq (macro constant) |
C11标准(ISO / IEC 9899:2011):
6.7.5对齐说明符
6.2.8对象对齐(p:48-49)
7.15对齐<stdalign.h>(p:268)
| ^ | xor (macro constant) |
| ^= | xor_eq (macro constant) |
字符&
和!
是不变的 ISO-646下,但提供了使用这些字符无论如何,以适应更加严格的历史字符集运营商的替代品。
eq
对于相等运算符没有其他拼写(如),==
因为该字符=
出现在所有支持的字符集中。
以下替代令牌是核心语言的一部分,并且在各方面的语言中,每个替代令牌的行为与其主令牌完全相同,但其拼写(字符串操作符可以使拼写可见)除外。两个字母的替代令牌有时被称为“二元符号”
Primary | Alternative |
---|---|
{ | <% |
} | %> |
[ | <: |
] | :> |
%: | |
%:%: |
在识别注释和字符串文字之前,会分析以下三个字符组(trigraphs),并且每个三角形的外观都会被相应的主要字符替换:
Primary | Trigraph |
---|---|
{ | ??< |
} | ??> |
[ | ??( |
] | ??) |
??= | |
\ | ??/ |
^ | ??' |
| | ??! |
~ | ??- |
由于 trigraphs 被提前处理,所以注释// Will the next line be executed?????/
会有效地注释掉下面的行,并将字符串文字(比如"What's going on??!"
被解析为)注释掉"What's going on|"
。
以下示例演示了<iso646.h>
头文件中的替代运算符拼写以及使用二元和三元符。
第一个命令行参数 argv1中的空格字符需要引号:“,World!”。
%:include <stdlib.h>%:include <stdio.h>%:include <iso646.h> int main(int argc, char** argv)??< if (argc > 1 and argv<:1:> not_eq NULL) <% printf("Hello%s\n", argv<:1:>); %> return EXIT_SUCCESS;??>
可能的输出:
Hello, World!