C++/C預處理指令及在創建動態鏈接庫Dll的相關使用

1  常見的C++/C預處理指令:#define,#ifdef,#ifndef,#endif

     所謂預處理指令,即在編譯器進行編譯前進行的掃描源代碼,進行初步轉換的操作。

  • #空指令 :無用
  • #include :包含一個源代碼文件
  • #define :定義宏
  • #undef :取消已定義的宏
  • #ifdef :如果已經定義了宏,則編譯下面代碼
  • #ifndef :如果未定義宏,則編譯下面代碼
  • #if :如果給定條件爲真,則編譯下面的代碼(常見:if 1 /if 0 )
  • #elif : 如果給定條件爲假,當前條件爲真,則編譯下面代碼
  • #endif :結束一個#if ->#elif->endif條件編譯塊
  • #error :停止編譯並顯示錯誤信息

2   創建動態鏈接庫或調用外部庫時,頭文件中:

#ifndef DLL_TEST
#define DLL_TEST

#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

(1)ifdef的作用如下:此段代碼由編譯器自動生成,爲了自動設置方法、變量、類的導出與導入。

  1. 編譯器加入"DLL_EXPORTS" 目的是定義宏定義,相當於在 該頭文件加上了 #define DLL_EXPORTS。

  2. 通過第一條宏定義判斷DLL_API類型是導出:__declspec(dllexport) 還是導入:__declspec(dllimport)

(2)對於DLL導出函數和導出類的定義的區別:

     

//導出函數
MYDLL_API int func(int a,int b); 
//導出類
class MYDLL_API cls
{
 public:
     int func(int a,int b);
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章