_CRTIMP 是 C RunTime IMPort 的縮寫,表示 C 執行期庫的實現相關標記。用於區分動態連結 (DLL) 與靜態連結的 C 執行期庫。
#ifndef _CRTIMP
#ifdef _DLL
#define _CRTIMP __declspec(dllimport)
#else
#define _CRTIMP
#endif
#endif
_DLL (使用動態 C 執行期庫),_CRTIMP 展開為 __declspec(dllimport),告訴編譯器從 DLL 匯入符號。_CRTIMP 為空,符號在本地解析。使用者程式碼不應直接使用 _CRTIMP。它是 Microsoft C Runtime (CRT) 內部標頭檔 (如 crtdefs.h) 用來裝飾 CRT 函數宣告的標記 (如 _CRTIMP int __cdecl printf(...))。
__declspec(dllexport):在建構 DLL 時,將函數/類別導出供外部使用。__declspec(dllimport):在使用 DLL 時,聲明從 DLL 匯入。#ifdef BUILDING_DLL #define API __declspec(dllexport) #else #define API __declspec(dllimport) #endif。原文中混雜了 Excel 啟用「分析工具庫」增益集以使用迴歸分析、巨集安全性設定等內容,與 _CRTIMP 無關,此處不贅述。