С++ 17 вводит атрибут [[maybe_unused]].
Я предполагаю, что это стандартизованная версия GCC и Clang's: __ атрибут __ ((не используется)).
Для неиспользуемых функций, от которых я не хочу видеть предупреждение,
должен ли я указывать атрибут на
объявления функций?
void maybe_used_function() [[maybe_unused]];
или определения функций?
void maybe_used_function() [[maybe_unused]] {
/* impl */
}
Либо один? Оба?
Будет ли эффект одинаковым как для стандартизованных, так и для специфических атрибутов компилятора?
Я не могу найти четкую документацию о поведении размещения и о том, что такое обычная практика.
Когда я помещаю атрибут перед телом функции в определение, GCC и clang выдают ошибку:
void function();
int main(){}
void function() __attribute__((unused)) {}
предупреждение: GCC не позволяет использовать атрибут "неиспользуемый" в этой позиции по определению функции [-Wgcc-compat] void function() __attribute __ ((не используется)) {
Однако атрибут может быть помещен в два других места без ошибок:
__attribute__((unused)) void __attribute__((unused)) function() {}
Возможно, один из этих способов заключается в том, как я должен использовать атрибут в определениях функций?