GUID 在 C++:中的用法
Usage of GUID in C++:
我想问一下 GUID 在C++中的声明是否与 C# 不同。我在 C# 中遇到了这个问题:
GUID InterfaceClassGuid = {0x4d1e55b2, 0xf16f, 0x11cf, 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30};
这在C++可行吗?如果不是,如何转换?谢谢。
<windows.h>
中GUID
的定义与此语法兼容。它也适用于 C。
最简单(也方便(是利用 MS 特定的__declspec(uuid(...))
:
class __declspec(uuid("{C1F400A4-3F08-11D3-9F0B-006008039E37}")) NullRenderer;
GUID x = __uuidof(NullRenderer);
这样,您甚至不必在源代码中拆分 GUID 组件,而是将其作为真正的 GUID 声明。
标准C++中没有定义 GUID 类型。但是,您可以(也许某些编译器供应商已经(定义一个可以用相同方式初始化的struct GUID
。
编辑:Microsoft按如下方式定义 GUID:
typedef struct _GUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;
使用此定义,您的代码应按原样工作。
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}};
试试看,也看这里:所以
相关文章:
- 这个指针在c++中的用法
- 当C++中需要自动删除时,这是静态的正确用法吗?
- libstdc++ 文件系统中未初始化的用法?
- 复制和交换习惯用法与移动操作之间的交互
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 命名参数习惯用法和(抽象)基类
- 省略号在C++中的所有用法
- () 在 C++ 11 中的特殊而奇怪的用法?
- 构造函数的用法
- 模板类中自动的类用法不完整
- 这里的 = 运算符有什么用法?
- 什么模板用法在阶乘中更好
- 如果可变长度元素的constexpr用法得到<>
- 为什么 setjmp/longjmp 的这种用法是未定义的行为?
- 访问提升:shared_ptr 主范围外崩溃,断言失败:px != 0.指针的正确用法是什么?
- C++ 中函数中 Const 用法之间的差异
- equal_to模板类C++用法
- PCL 中的 GICP 用法
- 向量的正确用法<int>::size_type
- C++命名空间的基本用法