【VC6】VC6上printf的一个BUG
当你运行如下的时候:printf("<????>\t0x%08X\t<No name>\n",pFuncAddr);你会发现,输出的<????>变成了<??}
不知道这是为什么。后来通过加空格解决了,如下:
printf("<??? >\t0x%08X\t<No name>\n",pFuncAddr);
那么,总之,用VC6,不要在printf里面输出??>这样的字符串。。。别的编译器没试过。
真蛋疼
这不是VC6上printf的BUG
??> 是C语言“三字符序列”,编译器预编译阶段转换为 }
这样的字符有9个, 它们全都是以两个问号开始,由第三个字符决定三字符组所表示的标点符号是什么。
字符串 转义后的含义
??= #
??( [
??) ]
??/ \
??< {
??> }
??' ^
??! |
??- ~
不必通过加空格解决,影响输出美观
解决方案是加入\进行转义
printf("<???\?>\t0x%08X\t<No name>\n",pFuncAddr);
或
printf("<????\>\t0x%08X\t<No name>\n",pFuncAddr); Jerry 发表于 2014-5-16 03:14
这不是VC6上printf的BUG
??> 是C语言“三字符序列”,编译器预编译阶段转换为 }
好吧,我还不知道呢 这个不清楚
页:
[1]