sizeof()返回不一致的结果,OSX

时间:2016-11-24 17:53:31

标签: c++ macos sizeof

当我在一个简单的“hello world”类型程序中调用我的OSX10_8机器上的sizeof(wchar_t)时,我得到了4个字节,正如我对使用UTF-32的机器所期望的那样。但是,当我从测试程序中调用它时,我正在使用验证我编写的应用程序的行为,我得到了1个字节。

我在测试程序和hello world程序之间看到的唯一区别是测试程序使用typedef

#ifdef _WCHAR_T_DEFINED
typedef wchar_t SQLWCHAR;
#else
typedef unsigned short SQLWCHAR;
#endif

当我在测试程序中调用sizeof()

 VerifyAndThrow( 
            (int) sizeof(SQLWCHAR), 
            (int) bufferLength, 
            SBT_L( "The last call to SqlGetData should return 5 characters" ), 
            SBODBC_FILELINE );

传递给VerifyAndThrow()的第一个参数是1。

有人可以解释这种差异的原因吗?它与typedef有关吗?我不认为这是因为wchat_t没有定义。如果是这种情况,我希望sizeof()返回unsigned short的大小,这在UTF-32机器上是两个字节。

0 个答案:

没有答案