deprecated pragma

deprecatedpragma 可讓您指出未來版本中可能不再支援函式、類型或任何其他識別碼,或不應該再使用。

注意

如需 C++14 [[deprecated]] 屬性的相關資訊,以及何時使用該屬性而非 Microsoft __declspec(deprecated) 修飾詞或 pragmadeprecated 的指引,請參閱 C++ 中的屬性。

語法

#pragma deprecated(identifier1 [ , identifier2 ... ])

備註

當編譯器遇到 所 deprecatedpragma 指定的識別碼時,它會發出編譯器警告 C4995

您可以取代巨集名稱。 為巨集名稱加上引號,否則會發生巨集展開。

由於 適用于所有 deprecatedpragma 相符的識別碼,而且不會將簽章納入考慮,因此它不是取代特定多載函式版本的最佳選項。 進入範圍的任何相符函式名稱會觸發警告。

建議您盡可能使用 C++14 [[deprecated]] 屬性,而不是 deprecatedpragma 。 Microsoft 特定的 __declspec(deprecated) 宣告修飾詞在許多案例中也是比 deprecatedpragma 更好的選擇。 [[deprecated]]屬性和 __declspec(deprecated) 修飾詞可讓您指定特定多載函式形式已被取代的狀態。 診斷警告只會出現在屬性或修飾詞所套用之特定多載函式的參考上。

範例

// pragma_directive_deprecated.cpp
// compile with: /W3
#include <stdio.h>
void func1(void) {
}

void func2(void) {
}

int main() {
   func1();
   func2();
   #pragma deprecated(func1, func2)
   func1();   // C4995
   func2();   // C4995
}

下列範例將示範如何取代類別:

// pragma_directive_deprecated2.cpp
// compile with: /W3
#pragma deprecated(X)
class X {  // C4995
public:
   void f(){}
};

int main() {
   X x;   // C4995
}

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵字