Причина использования (void) someInt; в коде

Я читаю некоторый код библиотеки, которую я использую, и обнаружил, что в функции это использовалось:

void someFunction(Foo& a, int index, int partId)
{
(void) partId;
(void) index;
// more code
}

Кто-нибудь знает почему? Благодарю.

5

Решение

Чтобы избежать предупреждения / ошибки компилятора, указывающего, что переменная не использовалась в теле функции. Это выбор стиля, другой способ добиться того же эффекта — оставить переменную без имени:

void someFunction(Foo& a, int /*index*/, int /*partId*/)
9

Другие решения

Обычно это делается, когда параметры не используются в функции, а компилятор выдает предупреждение о неиспользуемых параметрах. При добавлении кейса компилятор посчитает, что они были использованы, и не выдаст разметку.

Вы можете сделать то же самое, просто удалив имя параметра из функции:

void someFunction(Foo& a, int, int)
{
}
3

Index а также partId не используются внутри функции.

Компилятор C / C ++ обычно выдает предупреждение о неиспользуемых параметрах.

(void) parameter; оператор не будет генерировать никакого кода, но сообщит компилятору, что вы используете параметр, чтобы избежать указанного предупреждения.

Это также вежливый способ сообщить другому программисту, что параметры по какой-то причине не используются.
(обычно соответствует более общему интерфейсу или поддерживает устаревшие параметры из предыдущей версии того же интерфейса).

И последнее, но не менее важное, как отметил Джерри Коффин, это работает как в C, так и в C ++, тогда как альтернативное решение использования неназванных параметров работает только в C ++.

1

Что он делает, так это использование partId а также index, фактически не используя их. Другими словами, это вводит компилятор в заблуждение, что аргументы функции фактически используются, тогда как в действительности их не использует код.

Зачем это делать? Потому что они установили флаг в компиляторе, чтобы генерировать предупреждение, когда аргумент функции не используется в ее теле.

Обратите внимание, что в C ++ можно просто удалить имя аргумента из функции. Если вы видите это в C, попробуйте отключить предупреждение для неиспользуемых аргументов функции, так как вы не можете опустить имена аргументов.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector