c++渣渣一枚,由于老師的專案涉及到了c++的一些程式,有些不是很明白的地方,特來問一下。
#ifdef _WINDOWS32
#ifdef PUB_EXPORTS
#define PUB_API __declspec(dllexport)
#else
#define PUB_API __declspec(dllimport)
#endif
#else
#define PUB_API
#endif
想知道這一段程式是啥意思???為什么編譯不成功??為什么將_WINDOWS32加入到專案屬性-c/c++-前處理器定義中就可以編譯通過了??望大神解答。。。
uj5u.com熱心網友回復:
你在這段代碼檔案開頭可以:#define WINDOWS32
和
#define PUB_EXPORTS
如果有定義上面一個或者兩個符號,
#ifdef 就成立了,你這段代碼的#ifdef是嵌套的,和#else、#endif是配合的
你的代碼應該是撰寫DLL的,宣告輸出DLL中函式的時候,你只要在檔案開頭#define PUB_EXPORTS,它就會#define PUB_API __declspec(dllexport)
宣告呼叫DLL中函式的時候,沒有#define PUB_EXPORTS,它就會#define PUB_API __declspec(dllimport)
這樣DLL中宣告函式就是統一的,比如PUB_API int max(int x,int y)//可以放在頭檔案里,宣告輸出和宣告呼叫DLL函式都#include同樣的頭檔案,PUB_API 根據不同的#define替換。
uj5u.com熱心網友回復:
如果沒有#define _WINDOWS32就會#define PUB_API
這樣PUB_API就會被替換為空
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/74428.html
標籤:基礎類
上一篇:mfc單檔案應用程式添加對話框
