更新:2007 年 11 月
錯誤訊息
使用 /MP 時不支援 #import
如果您在編譯器 (Compiler) 命令中指定 /MP 編譯器選項以及要編譯的兩個或更多個檔案,而且其中一個或多個檔案包含 #import 前置處理器指示詞 (Preprocessor Directive),就會發出 C2813。#import 指示詞會從指定型別程式庫中的型別產生 C++ 類別 (Class),接著將這些類別寫入到兩個標頭檔中。因為如果多個編譯單位 (Compilation Unit) 匯入相同的型別程式庫,當這些單位同時嘗試寫入至相同標頭檔時就會發生衝突,所以不支援 #import 指示詞。
這個編譯器錯誤和 /MP 編譯器選項都是 Visual Studio 2008 中的新增功能。
範例
下面的範例會產生 C2813 錯誤訊息。"compile with:" 註解中的命令列會向編譯器表示要使用 /MP 和 /c 編譯器選項來編譯幾個檔案。其中至少有一個檔案會包含 #import 指示詞。因為要測試這個範例,所以我們會使用相同的檔案兩次。
// C2813.cpp
// compile with: /MP /c C2813.cpp C2813.cpp
#import "C:\windows\system32\stdole2.tlb" // C2813
int main()
{
}