Есть ли способ пометить методы / классы в C ++ как устаревшие?
В c # вы можете написать:
[Obsolete("You shouldn't use this method anymore.")] void foo() {}
Я использую инструментарий GNU / Eclipse CDT, если это имеет значение.
Самый простой способ с #define DEPRECATED. В GCC он расширяется до __attribute__((deprecated)), в Visual C ++ он расширяется до __declspec(deprecated), а в компиляторах, у которых нет чего-либо silimar, он расширяется до нуля.
#define DEPRECATED
__attribute__((deprecated))
__declspec(deprecated)
Только с использованием прагм, зависящих от компилятора: посмотрите документацию
int old_fn () __attribute__ ((deprecated));
Стандарт c ++ 17 теперь предоставляет эту функцию: https://en.cppreference.com/w/cpp/language/attributes/deprecated
[[deprecated]] void F(); [[deprecated("reason")]] void G(); class [[deprecated]] H { /*...*/ };
Я не знаю, какую версию C ++ вы используете, но Microsoft Visual C ++ имеет устаревшую прагму . Возможно, в вашей версии есть что-то похожее.