Каков наилучший способ подавить предупреждение "неиспользуемая переменная"
Есть 3 (которые, как я знаю) способы подавить предупреждение "неиспользуемая переменная". Какой-то конкретный способ лучше других?
Первый
- (void)testString:(NSString *)testString
{
(void)testString;
}
Второе
- (void)testString:(NSString *)__unused testString
{
}
Третий
- (void)testString:(NSString *)testString
{
#pragma unused(testString)
}
Ответы
Ответ 1
Это подход, который я использую: кросс-платформенный макрос для предупреждения о неиспользуемых переменных
Он позволяет использовать один макрос для любой платформы (хотя определения могут отличаться в зависимости от компилятора), поэтому он очень переносимый подход, чтобы выразить ваше намерение популярным компиляторам на языках C. В GCC и Clang эквивалентно переносу вашего третьего примера (#pragma unused(testString)
) в макрос.
Используя пример из связанного ответа:
- (void)testString:(NSString *)testString
{
MONUnusedParameter(testString);
}
Я нашел этот подход лучше всего для переносимости и ясности, используя некоторые довольно большие C-коды, С++, ObjC и ObjС++.
Ответ 2
Если вы компилируете GCC, вы можете использовать расширения атрибутов для установки атрибута 'unused'. Вот так:
int somevar __attribute__((unused));
Он также работает для предупреждений о неиспользуемых параметрах (-Wunused-parameter)
Чтобы сделать его короче для записи, я использую этот макрос:
#define _U_ __attribute__((unused))
И объявите следующее:
int somevar _U_ ;
Ответ 3
Один из способов сделать это - просто назначить переменную бессмысленно после ее объявления. Например:
int foo;
foo = 0;
Это должно подавлять предупреждение неиспользуемой переменной. Это просто бессмысленное задание.
Но в противном случае я бы согласился с ouah, первый метод является самым надежным, если вы должны выбрать из этих трех.