欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入解析C++編程中__alignof 與__uuidof運(yùn)算符的使用

 更新時(shí)間:2016年01月12日 16:29:34   投稿:goldensun  
這篇文章主要介紹了C++編程中__alignof 與__uuidof運(yùn)算符的使用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

__alignof 運(yùn)算符
C++11 引入 alignof 運(yùn)算符,該運(yùn)算符返回指定類型的對(duì)齊方式(以字節(jié)為單位)。為實(shí)現(xiàn)最大的可移植性,應(yīng)使用 alignof 運(yùn)算符,而不是特定于 Microsoft 的 __alignof 運(yùn)算符。
返回一個(gè) size_t 類型的值,該值是類型的對(duì)齊要求。
語法

    __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 的值相同。但是,請(qǐng)考慮該示例:

typedef struct { int a; double b; } S;
// __alignof(S) == 8

在該示例中,__alignof 值是結(jié)構(gòu)中的最大元素的對(duì)齊要求。
同樣,

復(fù)制代碼 代碼如下:

typedef __declspec(align(32)) struct { int a; } S;


__alignof(S) 等于 32。
__alignof 的用途之一是作為某個(gè)內(nèi)存分配例程的參數(shù)。例如,假定下面定義的結(jié)構(gòu) S,您可以調(diào)用名為 aligned_malloc 的內(nèi)存分配例程以在特定對(duì)齊邊界上分配內(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 運(yùn)算符

檢索 GUID 并附加到表達(dá)式。
語法

   __uuidof (
  expression 
)

備注
該 表達(dá)式 可以是類型名稱、指針、引用或該類型的數(shù)組、特定類型的模板或這些類型的變量。只要編譯器可以使用它查找附加的 GUID,自變量就是有效的。
內(nèi)部函數(shù)的一個(gè)特例就是當(dāng)在 0 或 NULL 中作為參數(shù)提供。在這種情況下,__uuidof 將返回由零組成的GUID。
使用此關(guān)鍵字用以提取附加的 GUID:
一個(gè)對(duì)象通過 uuid 擴(kuò)展其特性。
庫塊以使用 模塊 屬性創(chuàng)建。
System_CAPS_note注意
在調(diào)試版本中,__uuidof 總是動(dòng)態(tài)初始化一個(gè)對(duì)象 (運(yùn)行時(shí))。當(dāng)發(fā)布版本時(shí),__uuidof 可以靜態(tài)初始化對(duì)象(在編譯時(shí))。
下面的代碼 (使用ole32.lib編譯) 將顯示一個(gè)創(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。例如:

復(fù)制代碼 代碼如下:

StringFromCLSID(__LIBID_, &lpolestr);


相關(guān)文章

  • C++中string類的常用方法實(shí)例總結(jié)

    C++中string類的常用方法實(shí)例總結(jié)

    string類是C++提供的抽象數(shù)據(jù)類型,其支持可變長字符串,下面這篇文章主要給大家總結(jié)介紹了關(guān)于C++中string類的常用方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • OpenCV中C++函數(shù)imread讀取圖片的問題及解決方法

    OpenCV中C++函數(shù)imread讀取圖片的問題及解決方法

    利用C++函數(shù)imread讀取圖片的時(shí)候返回的結(jié)果總是空,而利用C函數(shù)cvLoadImage時(shí)卻能讀取到圖像。怎么回事?今天小編通過本教程給大家簡單說明原因
    2017-03-03
  • 詳解安卓系統(tǒng)中的Android.mk文件

    詳解安卓系統(tǒng)中的Android.mk文件

    這篇文章主要介紹了詳解安卓系統(tǒng)中的Android.mk文件,該文件用來告訴系統(tǒng)關(guān)于源代碼的編譯,需要的朋友可以參考下
    2015-07-07
  • C/C++中提高查找速度的小技巧

    C/C++中提高查找速度的小技巧

    這篇文章主要給大家介紹了C/C++中提高數(shù)組中查找某個(gè)元素或者字符串中查找某個(gè)字符效率的小技巧,提高速度對(duì)我們?nèi)粘i_發(fā)來說還是很有用的,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • vector與map的erase()函數(shù)詳細(xì)解析

    vector與map的erase()函數(shù)詳細(xì)解析

    vector和map都不能將it++寫在for循環(huán)中,而在循環(huán)體內(nèi)erase(it)
    2013-09-09
  • C++實(shí)現(xiàn)LeetCode(109.將有序鏈表轉(zhuǎn)為二叉搜索樹)

    C++實(shí)現(xiàn)LeetCode(109.將有序鏈表轉(zhuǎn)為二叉搜索樹)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(109.將有序鏈表轉(zhuǎn)為二叉搜索樹),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++封裝靜態(tài)鏈接庫和使用的詳細(xì)步驟

    C++封裝靜態(tài)鏈接庫和使用的詳細(xì)步驟

    這篇文章主要介紹了C++封裝靜態(tài)鏈接庫和使用,本文描述了怎么去把一個(gè)C++程序封裝成一個(gè)靜態(tài)庫并且如何去使用這些靜態(tài)庫,需要的朋友可以參考下
    2022-08-08
  • VC文件目錄常見操作實(shí)例匯總

    VC文件目錄常見操作實(shí)例匯總

    這篇文章主要介紹了VC文件目錄常見操作實(shí)例匯總,總結(jié)了VC針對(duì)文件目錄的各種常用操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • QT應(yīng)用程序cout輸出中文亂碼解決方法

    QT應(yīng)用程序cout輸出中文亂碼解決方法

    本文主要介紹了QT應(yīng)用程序cout輸出中文亂碼解決方法,文中通過圖文的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • C++的static靜態(tài)成員你有了解嗎

    C++的static靜態(tài)成員你有了解嗎

    這篇文章主要為大家詳細(xì)介紹了C++的static靜態(tài)成員,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評(píng)論