BCB6编译器与以前版本的编译器的一个不兼容的问题
以前一直用BCB5写程序,昨天第一次用BCB6写程序,却发现一个严重的问题。请看一个简单的程序:
#include <stdio.h>
void main()
{
unsigned Type = 'OB';
printf("%hX", Type);
}
在这个简单的程序里,用BCB6以前的编译器编译时,输出424F(表示Type的值为0x424F),而用BCB6的编译器编译时,输出的却是4F42(表示Type的值为0x4F42)。就是说,BCB6处理类似'OB'这样的常数时,采用了BIG ENDIAN编码,而以前的编译器(从TurboC)开始,一直采用的是LITTLE ENDIAN编码。我不知道BCB6里是否有一个设定,有知道如何设定让BCB6的输出结果和以前一样的朋友,告诉我一下。如果最后没有办法的话,请大家以此为戒,不要在BCB6里使用'OB'、'BM'这样的写法。不过Windows的头文件里就有这样的定义,我还没有来得及测试,不知道是否也是这样。