下面的代碼生成在Visual Studio 2010(其中alias_wchar_t是wchar_t的別名)警告C4127(條件表達式是常數):C4127:條件表達式是恆定
if (sizeof(alias_wchar_t) == sizeof(wchar_t)) // warning occurs here
{
// do stuff
}
else
{
// do other stuff
}
什麼來解決這個最優雅的方式,壓制警告?
我想出的最佳解決方案是將條件填充到靜態布爾中,並將其用作條件。有上面和下面的if-else,所以我換了整個事情的括號來限制變量儘可能的範圍代碼可遇不可求量:
這種感覺相當總值雖然。這看起來應該可以在編譯時而不是運行時解析,但預處理器不知道sizeof。有沒有更清潔,更優雅的方式來解決這個問題?
note:C++ 17正在考慮類似'如果constexpr'來解決這個問題 – 2016-03-22 05:12:27