Что означает этот макрос? Я просто найти следующий макрос в исходных файлах:Что означает этот макрос? #define UNUSED (x) ((x) = (x))
#define UNUSED(x) ((x)=(x))
Что означает этот макрос? Я просто найти следующий макрос в исходных файлах:Что означает этот макрос? #define UNUSED (x) ((x) = (x))
#define UNUSED(x) ((x)=(x))
Это, вероятно, есть для подавления предупреждений компилятора неиспользуемых переменных/аргументов функций. Вы также можете использовать это:
// C++ only
void some_func(int /*x*/)
Или
// C and C++
void some_func(int x)
{
(void)x;
}
Или ваш компилятор может поддерживать флаг, чтобы сделать это, но они являются портативными и не будет пропускать допустимые предупреждения.
Вы можете использовать анонимные параметры только в C++; они не разрешены в C. (Вопрос отмечен как C, так и C++, поэтому вы не ошибаетесь, но вы не дали существенного оговорки к своему предложению.) –
@JonathanLeffler: вопросы с тегами с C и C++ должны быть отвергнутым ... Хорошо, однако, я разъясню. –
@EdS. он должен быть разрешен, но только если пользователь правильно решает вопрос о различиях между C и C++. –
Используйте его, чтобы избавиться от предупреждения любого компилятора, ссылающегося на неиспользуемую переменную.
Остановить компилятор от жалобы на то, что переменная не используется.
Другие способы сделать это:
void foo(int)
void foo(int /* value */)
void foo(int value){ UNUSED(value); }
Некоторые компиляторы проблема предупреждения о неиспользуемых переменных - переменных, которые определены, но никогда не упоминаются. Иногда у вас есть код, который ссылается на переменную только при некоторых условных ifdefs (только на некоторых платформах или только при отладке), и неудобно дублировать эти условия в той точке, в которой определена переменная. Подобный макрос может использоваться для подавления предупреждения неиспользуемых переменных в таких случаях.
Чтобы улучшить производительность процессора до нескольких процессоров ascii-art? ;-) – alk
О, ничего себе, это неправильный способ реализовать '(void) x', чтобы избежать предупреждения неиспользуемой переменной. Использование присваивания имеет побочные эффекты, так что определение не означает, что оно говорит о жесте. – kfsone
В дополнение к тому, что отметил @kfsone, 'x' вообще не имеет доступного оператора присваивания. Вместо этого используйте '#define UNUSED (x) (void) x'. – dkrikun