非推奨のプラグマdeprecated pragma

deprecatedプラグマを使用すると、関数、型、またはその他の識別子が将来のリリースでサポートされなくなる可能性があるか、使用できなくなることを示すことができます。The deprecated pragma lets you indicate that a function, type, or any other identifier may no longer be supported in a future release or should no longer be used.

注意

C++ 14 [[deprecated]]属性の詳細と、Microsoft __declspec(deprecated)修飾子または非推奨のプラグマではなくこの属性を使用する場合のガイダンスについては、「 」のC++「属性」を参照してください。For information about the C++14 [[deprecated]] attribute, and guidance on when to use that attribute instead of the Microsoft __declspec(deprecated) modifier or the deprecated pragma, see Attributes in C++.

構文Syntax

#pragma 非推奨 ( identifier1 [ , identifier2 ...] )#pragma deprecated( identifier1 [ , identifier2 ... ] )

RemarksRemarks

コンパイラがで指定された識別子を検出した場合、deprecatedプラグマ、コンパイラの警告を発行C4995します。When the compiler encounters an identifier specified by a deprecated pragma, it issues compiler warning C4995.

マクロ名の使用を避けることができます。You can deprecate macro names. マクロ名を引用符で囲んで配置します。そうしないと、マクロ展開が発生します。Place the macro name in quotes or else macro expansion will occur.

deprecatedプラグマは、すべての一致する識別子で機能し、アカウントに署名を受け取らない、オーバー ロードされた関数の特定のバージョンを非推奨の最適なオプションではありません。Because the deprecated pragma works on all matching identifiers, and does not take signatures into account, it is not the best option for deprecating specific versions of overloaded functions. スコープ内にある一致する関数名は、警告をトリガーします。Any matching function name that is brought into scope triggers the warning.

C++ 14 を使用することをお勧めします。[[deprecated]]属性は、可能であれば、の代わりに、deprecatedプラグマ。We recommend you use the C++14 [[deprecated]] attribute, when possible, instead of the deprecated pragma. Microsoft 固有__declspec(deprecated)宣言修飾子はより多くの場合の方が適切でも、deprecatedプラグマ。The Microsoft-specific __declspec(deprecated) declaration modifier is also a better choice in many cases than the deprecated pragma. [[deprecated]]属性と__declspec(deprecated)修飾子を使用すると、オーバー ロードされた関数の特定のフォームの非推奨のステータスを指定できます。The [[deprecated]] attribute and __declspec(deprecated) modifier allow you to specify deprecated status for particular forms of overloaded functions. 診断の警告のみに表示されます、特定のオーバー ロードされた関数への参照属性または修飾子に適用されます。The diagnostic warning only appears on references to the specific overloaded function the attribute or modifier applies to.

Example

// 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
}

次のサンプルでは、クラスの使用を避ける方法を示します。The following sample shows how to deprecate a class:

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

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

関連項目See also

プラグマディレクティブと __ プラグマキーワードPragma directives and the __pragma keyword