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);
}

 

 

 

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