Исключение из одной строки для GCC_WARN_SHADOW = YES? - PullRequest
1 голос
/ 09 мая 2011

У меня есть этот код:

id error;
// a bunch of stuff, including using error
Finalization finalization = ^(int status) {
    id error; // <--- Declaration shadows a local variable
    // a bunch of stuff, using error
}
// a bunch of stuff, using error

Я использую GCC_WARN_SHADOW, потому что это то, что я хочу в каждом случае в моем коде, кроме этого.В этом случае это дает мне предупреждение, которое я хочу подавить.

Есть ли способ подавить это одно теневое предупреждение, не отключая GCC_WARN_SHADOW или , переименовывая внутреннюю ошибку во что-тоеще?Какой-нибудь способ отметить это объявление об ошибке?

Я использую clang с Xcode 4, если это имеет значение.

1 Ответ

1 голос
/ 11 марта 2013

Во-первых, по сути, это очень плохая карма - скрывать локальную переменную во внутреннем блоке (достаточно плохо скрывать глобальную переменную в функции).Теперь «ошибка» может принимать два разных значения внутри функции, и до тех пор, пока кто-нибудь не прочитает ваш код, он не станет непрерывно стучать головой.Я видел эту проблему в реальной жизни среди платных профессионалов, разрабатывающих приложения.Я действительно предлагаю переименовать внутреннюю переменную ошибки.

Отвечая на ваш вопрос, вы можете использовать прагму компилятора GCC / clang для подавления предупреждения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...