我的问题涉及标题中提到的问题。
我在头文件中有一个简单的结构体,如下所示:
如果我在C控制台应用程序中调用sizeof(WinHeaderType),我会得到68,但如果我在C++/CLI中使用相同的参数调用相同的函数,则会得到80。
有人能解释一下这种行为吗?
我对C++/CLI非常陌生,事实上我以前从未使用过它(几天前才开始),但我需要为.NET应用程序创建一个dll。
由于这是我的第一篇帖子,希望我没有违反任何论坛规则。
问候, Mo
[编辑] 它变得越来越奇怪了...
我在头文件中有一个简单的结构体,如下所示:
typedef struct
{
WORD FileType; // File ID (0x7000)
WORD HeaderSize; // Size of this file header in Bytes
WORD HeaderVersion; // yy.y
ULONG FileSize; // Size of the whole file in Bytes
WORD ImageHeaderSize; // Size of the image header in Bytes
WORD ULX, ULY, BRX, BRY;// bounding rectangle of the image
WORD NrOfFrames; // self explanatory
WORD Correction; // 0 = none, 1 = offset, 2 = gain, 4 = bad pixel, (ored)
double IntegrationTime; // frame time in microseconds
WORD TypeOfNumbers; // short, long integer, float, signed/unsigned, inverted,
// fault map, offset/gain correction data, badpixel correction data
BYTE x[WINRESTSIZE]; // fill up to 68 byte
} WinHeaderType;
如果我在C控制台应用程序中调用sizeof(WinHeaderType),我会得到68,但如果我在C++/CLI中使用相同的参数调用相同的函数,则会得到80。
有人能解释一下这种行为吗?
我对C++/CLI非常陌生,事实上我以前从未使用过它(几天前才开始),但我需要为.NET应用程序创建一个dll。
由于这是我的第一篇帖子,希望我没有违反任何论坛规则。
问候, Mo
[编辑] 它变得越来越奇怪了...
第一行:C控制台应用程序的输出
第二行,第一列:我编写的C/C++控制台应用程序,用于检查数据类型大小。
第二行,第二列:我编写的C++/CLI控制台应用程序,用于检查数据类型大小。
第一个应用程序的源代码:http://fbe.am/sId
最后两个应用程序的项目文件:http://fbe.am/sIf
有人能解释一下这是什么?!
WINRESTSIZE
不同?也许WORD
不同?最重要的是,C++/CLI 不是 C++。 - Some programmer dude