深入解析C++编程中__alignof 与__uuidof运算符的使用
__alignof 运算符 __alignof( type ) 备注
__alignof 值与基本类型的 sizeof 的值相同。但是,请考虑该示例: typedef struct { int a; double b; } S; // __alignof(S) == 8 在该示例中,__alignof 值是结构中的最大元素的对齐要求。 复制代码 代码如下: typedef __declspec(align(32)) struct { int a; } S; __alignof(S) 等于 32。 __alignof 的用途之一是作为某个内存分配例程的参数。例如,假定下面定义的结构 S,您可以调用名为 aligned_malloc 的内存分配例程以在特定对齐边界上分配内存。 typedef __declspec(align(32)) struct { int a; double b; } S; int n = 50; // array size S* p = (S*)aligned_malloc(n * sizeof(S),__alignof(S));
检索 GUID 并附加到表达式。 __uuidof ( expression ) 备注 // expre_uuidof.cpp // compile with: ole32.lib #include "stdio.h" #include "windows.h" [emitidl]; [module(name="MyLib")]; [export] struct stuff { int i; }; int main() { LPOLESTR lpolestr; StringFromCLSID(__uuidof(MyLib),&lpolestr); wprintf_s(L"%s",lpolestr); CoTaskMemFree(lpolestr); } 注释 复制代码 代码如下: StringFromCLSID(__LIBID_,&lpolestr); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |