deprecated (C++)
(Microsoft 固有の仕様→) 例外が 使用しないでください のプラグマと 使用しないでください の宣言によって同じ機能を確認しました :
使用しないでください の宣言はプラグマのフォームが関数名のすべてのオーバーロードされた形式に適用される使用されていない関数のオーバーロードの特定の形式を指定することができます。
使用しないでください の宣言はコンパイル時に表示するメッセージを指定することができます。メッセージのテキストがマクロからです。
マクロは 使用しないでください のプラグマで使用されていないとしてマークできます。
コンパイラで使用されていない識別子を使用する場合は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
}