__attribute__((deprecated))
- это gcc способ (также поддерживается в clang ) для обозначения функции / метода как устаревшего. Если один из них помечен как «устарел», предупреждение будет выдаваться всякий раз, когда кто-либо его вызывает.
Синтаксис для нормальных функций будет
__attribute__((deprecated))
void f(...) {
...
}
// gcc 4.5+ / clang
__attribute__((deprecated("g has been deprecated please use g2 instead")))
void g(...) {
...
}
и метод Objective-C будет
@interface MyClass : NSObject { ... }
-(void)f:(id)x __attribute__((deprecated));
...
@end
Вы также можете пометить весь класс как устаревший с помощью
__attribute__((deprecated))
@interface DeprecatedClass : NSObject { ... }
...
@end
Apple также предоставляет заголовок <AvailabilityMacros.h>
, который предоставляет макросы DEPRECATED_ATTRIBUTE и DEPRECATED_MSG_ATTRIBUTE (msg), которые расширяются до указанных выше атрибутов, или ничего, если компилятор не поддерживает атрибуты. Обратите внимание, что этот заголовок не существует за пределами OS X / iOS.
Примечание: если вы используете Swift, вы используете атрибут @available
для устаревания элемента, например
@available(*, deprecated=2.0, message="no longer needed")
func f() {
...
}