深入解析C++編程中__alignof 與__uuidof運算符的使用
__alignof 運算符
C++11 引入 alignof 運算符,該運算符返回指定類型的對齊方式(以字節(jié)為單位)。為實現(xiàn)最大的可移植性,應(yīng)使用 alignof 運算符,而不是特定于 Microsoft 的 __alignof 運算符。
返回一個 size_t 類型的值,該值是類型的對齊要求。
語法
__alignof( type )
備注
例如:
Expression | 值 |
---|---|
__alignof( char ) | 1 |
__alignof( short ) | 2 |
__alignof( int ) | 4 |
__alignof( __int64 ) | 8 |
__alignof( float ) | 4 |
__alignof( double ) | 8 |
__alignof( char* ) | 4 |
__alignof 值與基本類型的 sizeof 的值相同。但是,請考慮該示例:
typedef struct { int a; double b; } S; // __alignof(S) == 8
在該示例中,__alignof 值是結(jié)構(gòu)中的最大元素的對齊要求。
同樣,
typedef __declspec(align(32)) struct { int a; } S;
__alignof(S) 等于 32。
__alignof 的用途之一是作為某個內(nèi)存分配例程的參數(shù)。例如,假定下面定義的結(jié)構(gòu) S,您可以調(diào)用名為 aligned_malloc 的內(nèi)存分配例程以在特定對齊邊界上分配內(nèi)存。
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));
__uuidof 運算符
檢索 GUID 并附加到表達式。
語法
__uuidof ( expression )
備注
該 表達式 可以是類型名稱、指針、引用或該類型的數(shù)組、特定類型的模板或這些類型的變量。只要編譯器可以使用它查找附加的 GUID,自變量就是有效的。
內(nèi)部函數(shù)的一個特例就是當(dāng)在 0 或 NULL 中作為參數(shù)提供。在這種情況下,__uuidof 將返回由零組成的GUID。
使用此關(guān)鍵字用以提取附加的 GUID:
一個對象通過 uuid 擴展其特性。
庫塊以使用 模塊 屬性創(chuàng)建。
System_CAPS_note注意
在調(diào)試版本中,__uuidof 總是動態(tài)初始化一個對象 (運行時)。當(dāng)發(fā)布版本時,__uuidof 可以靜態(tài)初始化對象(在編譯時)。
下面的代碼 (使用ole32.lib編譯) 將顯示一個創(chuàng)建模塊屬性庫塊uuid:
// 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); }
注釋
當(dāng)庫名不再在范圍之內(nèi),你可以使用__LIBID_而不是 __uuidof。例如:
StringFromCLSID(__LIBID_, &lpolestr);
欄 目:C語言
下一篇:學(xué)習(xí)C和C++的9點經(jīng)驗總結(jié)
本文標(biāo)題:深入解析C++編程中__alignof 與__uuidof運算符的使用
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2591.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10深入理解約瑟夫環(huán)的數(shù)學(xué)優(yōu)化方法
- 01-10深入二叉樹兩個結(jié)點的最低共同父結(jié)點的詳解
- 01-10數(shù)據(jù)結(jié)構(gòu)課程設(shè)計- 解析最少換車次數(shù)的問題詳解
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10深入第K大數(shù)問題以及算法概要的詳解
- 01-10深入解析最長公共子串
- 01-10c++中inline的用法分析


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery