通常、COM ルールに従っていますが、MIDL コンパイルを実行せず、c/c++ 以外の言語を対象としないため、私が働いている場所では「COM のような」モデルを使用しています。そのため、いつでも自分のニーズに合わせてルールを曲げることができることはわかっていますが、いつの日か本当に COM 準拠になりたいと思うかもしれません。
誰かが特定のインターフェイスから特定のメソッドを使用してコードをコンパイルしたときに、警告を出力したいと考えています。C++ (Microsoft コンパイラのみをサポート) では、__declspec(deprecated)
目的を達成するために関数宣言の前に追加します。
これをインターフェイス メソッド宣言の前に追加することはできますか?それとも、それを行うためのより良い、より多くの COM 方法がありますか?
また、メソッドの前に追加するだけ__declspec(deprecated)
で、ユーザーに再コンパイルを強制するのに十分かどうかも知りたいです (可能であれば、それを避けたいです)。
ありがとう
アップデート
__declspec(deprecated)
次のようにメソッド宣言の前で使用してみました:
struct Interface : public IUnknown
{
__declspec(deprecated) virtual HRESULT __stdcall OldMethod
(
int Arg1;
int Arg2;
) = 0;
virtual HRESULT __stdcall NewMethod
(
//arguments...
) = 0;
}
メソッドを非推奨にするこの方法では、OldMethod を使用しようとしても、コンパイラの警告はまったく表示されません。__declspec(deprecated)
純粋仮想メソッドでの使用について、私が知らない制限はありますか?
再度、感謝します