在C+中使用GUID+;: 我想问一下C++中GUID声明是否与C语言不同。我在C#中遇到了这个问题: C++中是否可行?如果不是,如何转换?谢谢。< P>标准C++中没有定义GUID类型。但是,您可以(也许有些编译器供应商已经)定义一个struct GUID,它可以以相同的方式初始化

在C+中使用GUID+;: 我想问一下C++中GUID声明是否与C语言不同。我在C#中遇到了这个问题: C++中是否可行?如果不是,如何转换?谢谢。< P>标准C++中没有定义GUID类型。但是,您可以(也许有些编译器供应商已经)定义一个struct GUID,它可以以相同的方式初始化,c#,c++,winapi,C#,C++,Winapi,编辑: 详情如下: typedef struct _GUID { DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; } GUID; 使用此定义,代码应该按原样工作。< P>标准C++中没有定义GUID类型。但是,您可以(也许有些编译器供应商已经)定义一个struct GUID,它可以以相同的方式初始化 编辑: 详情如下: typedef struct _GUID { DWORD Data1; WORD Dat

编辑: 详情如下:

typedef struct _GUID {
  DWORD Data1;
  WORD  Data2;
  WORD  Data3;
  BYTE  Data4[8];
} GUID;

使用此定义,代码应该按原样工作。

< P>标准C++中没有定义GUID类型。但是,您可以(也许有些编译器供应商已经)定义一个
struct GUID
,它可以以相同的方式初始化

编辑: 详情如下:

typedef struct _GUID {
  DWORD Data1;
  WORD  Data2;
  WORD  Data3;
  BYTE  Data4[8];
} GUID;

使用此定义,代码应按原样工作。

中的
GUID
定义与此语法兼容。它也适用于C。

GUID
的定义与此语法兼容。它也适用于C。

GUID结构与C#不同。它被定义为

typedef struct _GUID 
{  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   BYTE Data[8];
} GUID;
如果要将其视为变量,您可以执行以下操作:

GUID guid = {0x4d1e55b2, 0xf16f, 0x11cf, {0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}};

试试看这里:

GUID结构与C#不同。它被定义为

typedef struct _GUID 
{  
   DWORD Data1;  
   WORD Data2;  
   WORD Data3;  
   BYTE Data[8];
} GUID;
如果要将其视为变量,您可以执行以下操作:

GUID guid = {0x4d1e55b2, 0xf16f, 0x11cf, {0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}};
请尝试并查看此处:

也许最简单(也很方便)的方法是利用MS特定的:

通过这种方式,您甚至不必在源代码中拆分GUID组件,而是将其作为真正的GUID声明。

最简单(也很方便)的可能是利用MS特定的:


这样,您甚至不必在源代码中拆分GUID组件,而是将其作为真正的GUID声明。

如果我愿意,我会在调试器自动中的InterfaceClassGuid附近得到红色文本,如下所示:4D1E55B2-F15F-11CF-88CB-001111000030(红色)。这正常吗?@AverageAtBest:红色是因为监视值发生了变化(好的,这就是您声明的目的)。显示的格式更紧凑一些。它省略了
0x
,并连接最后6个字节。但仍然是相同的值。当我这样做时,我会在调试器自动中的InterfaceClassGuid附近得到红色文本,如下所示:4D1E55B2-F15F-11CF-88CB-001111000030(红色)。这正常吗?@AverageAtBest:红色是因为监视值发生了变化(好的,这就是您声明的目的)。显示的格式更紧凑一些。它省略了
0x
,并连接最后6个字节。不过还是一样的价值。