表示: Delphi
C++
表示設定
deprecated
提供:RAD Studio
目次 |
構文
<entity declaration> [[deprecated]]
または
<entity declaration> [[deprecated("message")]]
説明
deprecated 属性を使用すると、ユーザー定義の構文要素に非推奨のフラグを立てることができます。 非推奨の構文要素は古い形式のもので、より適切な代替要素に置き換えることができます。もう使用されないことになっており、今後サポートされなくなる可能性もあります。
非推奨の構文要素が見つかったら、「W8111 非推奨のエンティティ %s にアクセスしています(C++)」という警告が表示されます。 この警告は、非推奨型の変数など、あらゆる種類の非推奨エンティティについて送出されます。
2 番目の構文を用いると、ユーザーが警告中にメッセージを出力できるようになります。 メッセージでは、代わりに使用したほうがよい新しい構文要素を勧めるのが普通です。
メモ: deprecated 属性は、C++ 検査ではサポートされていません。 代わりに、定義済みマクロ _DEPRECATED_ATTRIBUTE0 と _DEPRECATED_ATTRIBUTE1 の使用を検討してください。
警告メッセージは、非推奨に定められているエンティティがコード内で使用された場合に発せられ、そうでなければ、ありません。
deprecated 属性をサポートしている構文要素は以下のとおりです。
列挙型
enum myEnum [[Deprecated|deprecated]] { e0, e1, e2 }; myEnum e = e1; //W8111 非推奨エンティティ 'myEnum' へのアクセス
グローバル関数/変数
int x [[Deprecated|deprecated]]; void myFunc(int, int) [[Deprecated("use myFunc(int,double) instead")]] { } void myFunc(int, double){ } // ... myFunc(3,3); //W8111 非推奨エンティティ 'myFunc(int,int)' へのアクセスで、myFunc(int,double) を代わりに使用
クラス/構造体
class A [[Deprecated|deprecated]] { } a0; // 警告 struct B [[Deprecated|deprecated]] { } b0; // 警告 class C : A{ } // ... C c0; //W8111 非推奨エンティティ 'A' へのアクセス
メモ: クラス/構造体がアクセスされると(上記の例では、クラス/構造体がインスタンス化されると)、警告が送出されます。 非推奨の上位クラスからも警告が出力されます。
メソッドおよびフィールド
class A{ public: int m_x [[Deprecated|deprecated]]; int m_y [[Deprecated|deprecated]]; A(int x, double y){} A(int x, int y) [[Deprecated("use the A(int,double) constructor")]]{} //W8111 非推奨エンティティ 'A::A(int,int)' へのアクセスで、A(int,double) コンストラクタを使用 } a0(5,6); // ... A a1(5,1.0);//警告なし a1.m_x=5; //W8111 非推奨エンティティ 'A::m_x' へのアクセス
メモ: 上記の場合、警告にはメンバ名より先にクラス名が出力されます。
テンプレート クラス
template <class T> class A { public: template <class T> class B [[Deprecated|deprecated]] {}; }; // ... A<int>::B<double> a0; //W8111 非推奨エンティティ 'A<int>::B<double>' へのアクセス
メモ: Delphi コンポーネントのコンパイル時、ユニットが C++ に変換される(.hpp ファイルが生成される)とき、非推奨フラグの付いた構文要素が元のユニットにある場合、それらには、.hpp ファイルでも非推奨のマークが付けられます。
例
SysUtils.hpp において:
class PASCALIMPLEMENTATION EStackOverflow [[Deprecated|deprecated]] : public EExternal
移植性
| POSIX | Win32 | Win64 | ANSI C | ANSI C++ | |
|---|---|---|---|---|---|
|
非推奨 |
+ |
メモ: deprecated 属性は 64 ビット C++ コンパイラ(BCC64)ではサポートされていません。