深入理解Symbian控制項架構

2021-04-14 09:12:42 字數 1485 閱讀 8630

在symbian程式中我們經常會看到import_c這個關鍵字,它是c:/symbian/8.0a/s60_2nd_fp2_sc/epoc32/include下e32def.h檔案裡面定義的乙個巨集. 

原定義如下:

#define import_c __declspec(dllexport)

那麼__declspec(dllexport)又是什麼東東呢?

先看**:

以下是在dev-c++裡建立自已的dll時的dll.h裡面的**,這裡面有乙個_declspec(dllexport)

#ifndef _dll_h_

#define _dll_h_     //防重複定義

#if building_dll

# define dllimport __declspec (dllexport)

#else /* not building_dll */

# define dllimport __declspec (dllimport)

#endif /* not building_dll */

dllimport void helloworld (void);

#endif /* _dll_h_ */

上面**裡面的_delcspce(dllexport)被定義為巨集,這樣可以提高程式的可讀性!這個的作用是將函式定義為匯出函式,也就是說這個函式要被包含這個函式的程式之外的程式呼叫!本語句中就是:void helloword(void)

摘自msdn:在 32 位編譯器版本中,可以使用 __declspec(dllexport) 關鍵字從 dll 匯出資料、函式、類或類成員函式。__declspec(dllexport)將匯出指令新增到物件檔案

若要匯出函式,__declspec(dllexport)關鍵字必須出現在呼叫約定關鍵字的左邊(如果指定了關鍵字)。例如:

__declspec(dllexport) void __cdecl function1(void);
若要匯出類中的所有公共資料成員和成員函式,關鍵字必須出現在類名的左邊,如下所示:

class __declspec(dllexport) cexampleexport : public cobject;
生成 dll 時,通常建立乙個包含正在匯出的函式原型和/或類的標頭檔案,並將__declspec(dllexport)新增到頭檔案中的宣告。若要提高**的可讀性,請為__declspec(dllexport)定義乙個巨集並對正在匯出的每個符號使用該巨集:

#define dllexport   __declspec( dllexport )
__declspec(dllexport)將函式名儲存在 dll 的匯出表中。

深入理解HBase的系統架構

監控集群中的region server的工作狀態。通過監聽zookeeper對於ephemeral node狀態的通知 管理資料庫 客戶向該region server查詢負責管理自己想要訪問的row key的所在的region的region server的位址。客戶會快取這一資訊以及meta tab...

PHP深入理解 PHP架構布局

解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...

PHP深入理解 PHP架構布局

解析為token 將語法轉換為抽象語法樹 將語法樹轉換opcodes scanning parsing compilation excution 執行opcodes 從上圖中看出主要從解析phpcode到執行主要經過了四個階段.獲取token可以通過token get all 函式獲取token資訊...