Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2018, 10:48   #1
Klapatun
Новичок
Джуниор
 
Регистрация: 12.12.2018
Сообщений: 2
По умолчанию #define LWIP_UNUSED_ARG(x) (void)(x), это вообще законно?

Доброго времени суток,
Листал я как-то код одной библиотеки и попалась мне на глаза подобная строчка
Код:
/** Eliminates compiler warning about unused arguments (GCC -Wextra -Wunused). */
#ifndef LWIP_UNUSED_ARG
#define LWIP_UNUSED_ARG(x) (void)x
#endif /* LWIP_UNUSED_ARG */
Из комментария понятно, что этот макрос делает, но не понятно как...
В недоумение меня ввело именно (void)x, я всегда считал, что приведение переменной к void равносильно вызову сатаны и вообще противоречит законам мироздания, а тут такое...
Буду очень сильно благодарен, если кто-нибудь расскажет, как это работает и почему?
Klapatun вне форума Ответить с цитированием
Старый 12.12.2018, 10:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

Цитата:
Сообщение от Klapatun Посмотреть сообщение
я всегда считал, что приведение переменной к void равносильно вызову сатаны и вообще противоречит законам мироздания, а тут такое...
Начните учить язык.
Цитата:
4 Any expression can be explicitly converted to type cv void." The
expression value is discarded. [Note: however, if the value is in a
temporary variable (_class.temporary_), the destructor for that vari-
able is not executed until the usual time, and the value of the vari-
able is preserved for the purpose of executing the destructor. ] The
lvalue-to-rvalue (_conv.lval_), array-to-pointer (_conv.array_), and
function-to-pointer (_conv.func_) standard conversions are not applied
to the expression.
http://www.open-std.org/jtc1/sc22/wg...2013/n3690.pdf
Цитата:
6 Any expression can be explicitly converted to type cv void, in which case it becomes a discarded-value
expression (Clause 5). [ Note: however, if the value is in a temporary object (12.2), the destructor for that
object is not executed until the usual time,

Последний раз редактировалось p51x; 12.12.2018 в 10:56.
p51x вне форума Ответить с цитированием
Старый 12.12.2018, 11:21   #3
Klapatun
Новичок
Джуниор
 
Регистрация: 12.12.2018
Сообщений: 2
По умолчанию

Спасибо большое
Klapatun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stream. Что это такое вообще? hoz Общие вопросы .NET 7 28.03.2016 19:14
Как это вообще решить? NickПавел Visual C++ 2 09.12.2012 23:49
#define BAR_MAX 10, что это и как оно работает? KrivieRuki Помощь студентам 1 19.03.2012 21:40
Электронные книги - законно ли это (в частности - bookfi.org) vedro-compota Свободное общение 29 11.01.2012 07:53