deprecated

提供: Appmethod Topics
移動先: 案内検索

キーワード(アルファベット順):インデックス への移動



構文

<entity declaration> [[deprecated]]

または、

<entity declaration> [[deprecated("message")]]

説明

deprecated 属性を使用すると、ユーザー定義の構文要素に非推奨のフラグを立てることができます。 非推奨の構文要素は古い形式のもので、より適切な代替要素に置き換えることができます。もう使用されないことになっており、今後サポートされなくなる可能性もあります。

非推奨の構文要素が見つかったら、W8111: 非推奨のエンティティ %s にアクセスしている (C++) という警告が送出されます。 この警告は、非推奨型の変数など、あらゆる種類の非推奨エンティティについて送出されます。

2 番目の構文を用いると、ユーザーが警告中にメッセージを出力できるようになります。 メッセージでは、代わりに使用したほうがよい新しい構文要素を勧めるのが普通です。

メモ: deprecated 属性は、C++ 検査ではサポートされていません。 代わりに、定義済みマクロ _DEPRECATED_ATTRIBUTE0 と _DEPRECATED_ATTRIBUTE1 を検討してください。

警告メッセージは、非推奨に定められているエンティティがコード内で使用された場合に発せられ、そうでなければ、ありません。

deprecated 属性をサポートしている構文要素は以下のとおりです。

列挙型

enum myEnum <nowiki>[[deprecated]]</nowiki> { e0, e1, e2 };
myEnum e = e1; //W8111 非推奨エンティティ 'myEnum' へのアクセス

グローバル関数/変数

int x <nowiki>[[deprecated]]</nowiki>;
void myFunc(int, int) <nowiki>[[deprecated("use myFunc(int,double) instead")]]</nowiki> {
}
void myFunc(int, double){
}
//...
myFunc(3,3); //W8111 非推奨エンティティ 'myFunc(int,int)' へのアクセスで、myFunc(int,double) を代わりに使用

クラス/構造体

class A <nowiki>[[deprecated]]</nowiki> {
} a0; // 警告
struct B <nowiki>[[deprecated]]</nowiki> {
} b0; // 警告
class C : A{
}
//...
C c0; //W8111 非推奨エンティティ 'A' へのアクセス

メモ: クラス/構造体がアクセスされると(上記の例では、クラス/構造体がインスタンス化されると)、警告が送出されます。 非推奨の上位クラスからも警告が出力されます。

メソッドおよびフィールド

class A{
 public:
  int m_x <nowiki>[[deprecated]]</nowiki>;
  int m_y <nowiki>[[deprecated]]</nowiki>;
  A(int x, double y){}
  A(int x, int y) <nowiki>[[deprecated("use the A(int,double) constructor")]]</nowiki>{} //W8111 非推奨エンティティ 'A::A(int,int)' へのアクセスで、A(int,double) コンストラクタを使用
} a0(5,6);
//...
A a1(5,1.0);//No warning
a1.m_x=5; //W8111 非推奨エンティティ 'A::m_x' へのアクセス

メモ: 上記の場合、警告にはメンバ名より先にクラス名が出力されます。

テンプレート クラス

template <class T> class A  {
 public:
  template <class T> class B  <nowiki>[[deprecated]]</nowiki> {};
};
//...
A<int>::B<double> a0; // W8111 非推奨エンティティ 'A<int>::B<double>' へアクセス

メモ: Object Pascal コンポーネントのコンパイル時、ユニットが C++ に変換される(.hpp ファイルが生成される)とき、非推奨フラグの付いた構文要素が元のユニットにある場合、それらには、.hpp ファイルでも非推奨のマークが付けられます。

SysUtils.hpp において:

 class PASCALIMPLEMENTATION EStackOverflow <nowiki>[[deprecated]]</nowiki> : public EExternal

移植性

POSIX Win32 Win64 ANSI C ANSI C++

非推奨

+

メモ: deprecated 属性は、Clang ベースの C++ コンパイラではサポートされていません。「C++0x 属性の回避策(Clang ベース C++ コンパイラ)」を参照してください。

関連項目