Предупреждение о неиспользуемой переменной при настройке оптимизации

Когда я компилирую следующий фрагмент кода с включенной оптимизацией

double bitrate = 8 * m_totBytes / (Simulator::Now() - m_startTime).GetSeconds();
double instBitrate = 8 * message.GetSize() / (Simulator::Now() - m_lastRecv).GetSeconds();
normBitrate = 0.1 * instBitrate + 0.9 * m_resolution;

NS_LOG_INFO("------RECEIVED: " << message.GetSize()
<< " Bitrate = " << bitrate
<< " instBit = " << instBitrate
<< " normBit = " << normBitrate);

Я получаю предупреждение компилятора, говорящее:

error: unused variable ‘bitrate’ [-Werror=unused-variable]

поскольку NS_LOG_INFO макрос оптимизируется компилятором. Для того, чтобы скомпилировать, я должен добавить бесполезный и уродливый фрагмент кода, подобный следующему:

if (false) { // For suppressing "Unused variable" warning when compiling with "-d optimiized"std::cout << bitrate << instBitrate << normBitrate << std::endl;
}

Как я могу скомпилировать его, не отключая предупреждения, оптимизацию и никакой ненужный код?

0

Решение

Поскольку вы не используете эту переменную, кроме как в этом случае, почему бы просто не сделать:

NS_LOG_INFO("------RECEIVED: " << message.GetSize()
<< " Bitrate = " << (8 * m_totBytes / (Simulator::Now() - m_startTime).GetSeconds())
<< " instBit = " << instBitrate
<< " normBit = " << normBitrate);
3

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

Других решений пока нет …

По вопросам рекламы [email protected]