本文共 1283 字,大约阅读时间需要 4 分钟。
这些鲜为人知的C++符号,可直接在代码中使用,但实践中不推荐这么做,可作为茶余饭后的乐趣了解C++的另一面。
虽然它们鲜为人知,但却不是GNU g++独有的,而是C++标准定义的,找一本C++标准书或pdf文档看看,就可以见到它们赫然在目。
代码中,可用左边的替代右边的:
可选的符号 | 可替代的常见符号 |
|
| { | 注意不能替代函数定义的{ |
%> | } | 注意不能替代函数定义的} |
<:> | [ |
|
:> | ] |
|
%: | # |
|
%:%: | ## |
|
and | && |
|
or | || |
|
xor | ^ |
|
bitor | | |
|
compl | ~ |
|
bitand | & |
|
and_eq | &= |
|
or_eq | |= |
|
xor_eq | ^= |
|
not | ! |
|
not_eq | != |
|
// GNU g++编译方法:g++ -g -o a a.cpp #include
int main() { int N = 2;
for (int i=0; i
printf("%d\n", i); %>
return 0; } |
三个字符等同单个字符,GNU g++编译时需要指定编译参数“-trigraphs”。
可选的符号 | 可替代的常见符号 |
??= | # |
??/ | \ |
??’ | ^ |
??( | [ |
??) | ] |
?? | { |
??> | } |
??! | | |
??- | ~ |
// 注意使用GNU g++编译以下代码,需要指定编译参数“-trigraphs” // g++ -g -o b b.cpp -trigraphs #include
// 下一语句完全等同于:#define index(array, i) array[i] ??=define index(array, i) array??(i??)
int main() { int m[] = { 3, 7 }; printf("m[0]=%d, m[1]=%d\n", index(m, 0), index(m, 1)); return 0; } |
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 |
|
转载地址:http://pwrel.baihongyu.com/