Конструкция (void)value; Что за зверь?

Добрый день форумчане.
Установил библиотеку - AsyncMQTT_ESP32
Открыл пример ESP32->FullyFeatured_ESP32

Сразу скажу, пример работает, тут вопросов нет.

Полный код приводить не буду, приведу только код, поставивший меня в тупик.
Ниже callback функция, вызывается когда приходит MQTT сообщение, переменная payload определена как char* , далее конструкция (void) payload; тут возник вопрос зачем она (конструкция эта)? В инете ответа не нашел.
Я так понимаю, что мы приводим char* к типу void, если конечно я прав, но зачем?
Такие конструкции встретил в паре мест, в примерах этой библиотеки.

void onMqttMessage(char* topic, char* payload, const AsyncMqttClientMessageProperties& properties,
                   const size_t& len, const size_t& index, const size_t& total)
{
  (void) payload;

  Serial.println("Publish received.");
  Serial.print("  topic: ");
  Serial.println(topic);
  Serial.print("  qos: ");
  Serial.println(properties.qos);
  Serial.print("  dup: ");
  Serial.println(properties.dup);
  Serial.print("  retain: ");
  Serial.println(properties.retain);
  Serial.print("  len: ");
  Serial.println(len);
  Serial.print("  index: ");
  Serial.println(index);
  Serial.print("  total: ");
  Serial.println(total);
}

Сделал простой пример - void - Wokwi ESP32, STM32, Arduino Simulator
Никакой разницы в изменении содержимого переменной не увидел.
Вот сижу мучаюсь, может кто расскажет для чего этот (void) payload;?

Чтобы компилятор не писал предупреждение о неиспользованном параметре функции.

1 лайк

И только?
Я глянул, действительно, если не используется параметр, то ставят такую конструкцию.
Благодарю, теперь могу спать спокойно!

Обсуждали вот тут

там есть и другие варианты

2 лайка

Поиском искал, но не наткнулся. Действительно обсуждалось.

1 лайк