其它环境/工具对\e的支持(也就是表达Escape的ASCII的转义符(0x1B)) 会诱导我误认为\e是个标准C语言所支持的转义符. 其实它不是的.
忝列其中的有:(参考标准C语言手册 5.2.2 Character display semantics )
\a bell, 在支持的设备(终端)上会鸣响一声
\b 退格键. 就是Backspace键啦
\t TAB键.
\v 垂直TAB键, \t在今天还是很容易见到其作用, \v就难看到了
\f 进纸
\r 回车
\n 换行
\\ 表示\字符本身.
那些可能让人误解的因素有:
bash 中的$'string' 表示法所支持的转义序列中, 明确列出包含了\e, 而且相关文档上说:
ANSI转义符,等价于\033 (见 )
gcc 中对\e 的确有额外的支持. 这个最容易让频繁使用gcc的人误认为标准C支持这个了. 要想在字符串中嵌入这个特殊字符, 可以这样:
"a\033b"
"a\x1bb" 这种写法不对. 标准中说:
the construction '\x123'
specifies an integer character constant containing only one character, since a hexadecimal escape sequence
is terminated only by a non-hexadecimal character.
#define ESC_STR "\033"
#define ESC_CHR '\033'
"a" ESC "b"
编译期会自动把这三个字符串连成一体.
阅读(1868) | 评论(0) | 转发(0) |