最適化を有効にして次のコードをコンパイルすると
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;
}
警告、最適化、およびジャンクコードを無効にせずにコンパイルするにはどうすればよいですか?