在Visual C++ 2008 release 模式下,打开编译优化选项,输出汇编文件如下(摘取其中一部分):
PUBLIC ??_C@_02DPKJAMEF@?$CFd?$AA@ ; `string'
CONST SEGMENT
??_C@_02DPKJAMEF@?$CFd?$AA@ DB '%d', 00H ; `string'
CONST ENDS
蓝色粗体部分表示字符串常量的名字。
不打开优化选项,输入汇编文件如下:
_DATA SEGMENT
$SG2518 DB '%d', 00H
ORG $+1
$SG2519 DB '%d', 00H
_DATA ENDS
从上面可以看出,优化编译后,%d被编译成一个,但是不优化的话,就会编译成2个。
至于上述的字符串常量名字命名规则,不知道为什么了?如果有高手,恳请知悉,非常感谢!