Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 12.12.2018, 11: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, 11:54   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,086
По умолчанию

Цитата:
Сообщение от 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 в 11:56.
p51x вне форума   Ответить с цитированием
Старый 12.12.2018, 12:21   #3
Klapatun
Новичок
Джуниор
 
Регистрация: 12.12.2018
Сообщений: 2
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stream. Что это такое вообще? hoz Общие вопросы .NET 7 28.03.2016 20: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


06:58.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.