这些鲜为人知的C++符号,可直接在代码中使用,但实践中不推荐这么做,可作为茶余饭后的乐趣了解C++的另一面。
虽然它们鲜为人知,但却不是GNU g++独有的,而是C++标准定义的,找一本C++标准书或pdf文档看看,就可以见到它们赫然在目。
代码中,可用左边的替代右边的:
可选的符号 | 可替代的常见符号 | |
---|---|---|
<% | { | 注意不能替代函数定义的{ |
%> | } | 注意不能替代函数定义的} |
<: | [ | |
:> | ] | |
%: | # | |
%:%: | ## | |
and | && | |
or | || | |
xor | ^ | |
bitor | | | |
compl | ~ | |
bitand | & | |
and_eq | &= | |
or_eq | |= | |
xor_eq | ^= | |
not | ! | |
not_eq | != |
三个字符等同单个字符,GNU g++编译时需要指定编译参数“-trigraphs”。
可选的符号 | 可替代的常见符号 |
---|---|
??= | # |
??/ | \ |
??’ | ^ |
??( | [ |
??) | ] |
??< | { |
??> | } |
??! | | |
??- | ~ |
asm | do | if | return | typedef |
---|---|---|---|---|
auto | double | inline | short | typeid |
bool | dynamic_cast | int | signed | typename |
break | else | long | sizeof | union |
case | enum | mutable | static | unsigned |
catch | explicit | namespace | static_cast | using |
char | export | new | struct | virtual |
class | extern | operator | switch | void |
const | false | private | template | volatile |
const_cast | float | protected | this | wchar_t |
continue | for | public | throw | while |
default | friend | register | true |