非推奨 (C++)
このトピックでは、Microsoft 固有の非推奨の declspec 宣言について説明します。 C++14 [[deprecated]]
属性に関する情報と、その属性を使用するタイミングと Microsoft 固有の declspec またはプラグマに関するガイダンスについては、「C++ 標準属性」をご覧ください。
次の例外を除き、deprecated
宣言は、非推奨のプラグマと同じように機能します。
deprecated
宣言では、特定の形式の関数オーバーロードを非推奨として指定できます。一方、プラグマ形式は、オーバーロードされたすべての形式の関数名に適用されます。deprecated
宣言では、コンパイル時に表示されるメッセージを指定できます。 このメッセージのテキストをマクロから取り込むことができます。マクロは、
deprecated
プラグマでのみ非推奨としてマークできます。
コンパイラが非推奨の識別子または標準 [[deprecated]]
属性の使用を検出すると、 C4996 警告がスローされます。
例
次の例では、関数を非推奨としてマークする方法、および非推奨の関数が使用されている場合、コンパイル時に表示されるメッセージを指定する方法を示します。
// deprecated.cpp
// compile with: /W3
#define MY_TEXT "function is deprecated"
void func1(void) {}
__declspec(deprecated) void func1(int) {}
__declspec(deprecated("** this is a deprecated function **")) void func2(int) {}
__declspec(deprecated(MY_TEXT)) void func3(int) {}
int main() {
func1();
func1(1); // C4996
func2(1); // C4996
func3(1); // C4996
}
次の例では、クラスを非推奨としてマークする方法、および非推奨のクラスが使用されている場合、コンパイル時に表示されるメッセージを指定する方法を示します。
// deprecate_class.cpp
// compile with: /W3
struct __declspec(deprecated) X {
void f(){}
};
struct __declspec(deprecated("** X2 is deprecated **")) X2 {
void f(){}
};
int main() {
X x; // C4996
X2 x2; // C4996
}
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示