3
全部 我正在做一些初步檢查,看看我的系統是big-endian還是little-endian。 在LInux中,默認情況下它應該是little-endian,但我只是想仔細檢查一下。 我用2使用boost端支持 帶有增強功能的endianess-check與小代碼的結果相比有所不同
我用下面的靜態斷言
BOOST_STATIC_ASSERT(!BIG_ENDIAN);
在編譯時失敗從網絡上找到接近
- ,所以我雖然... mmhh ...是我的系統大端? 這是錯誤我
error: invalid application of ‘sizeof’ to incomplete type boost::STATIC_ASSERTION_FAILURE<false>’
如果我使用類似下面的一些代碼測試,它確認系統是小端。 你知道我做錯了什麼,它正確使用Boost宏嗎?
bool is_big_endian_v3(){ long x = 0x34333231; char *y = (char *) &x; if(std::strncmp(y,"1234",4)){ printf("Big Endian"); return true; }else{ printf("Little Endian"); return false; } std::runtime_error ex("I cannot be here"); throw ex; }
對不起再次打擾你,但是當我編寫代碼時,編譯器告訴我以下錯誤:'BOOST_BIG_ENDIAN'未在此範圍內聲明。函數調用不能出現在常量表達式中 模板參數1無效。我也找不到任何定義的關鍵字 – 2010-12-03 14:05:42