error: expected unqualified-id before ‘*’ token

出錯如下:

/home/xxx/boost_1_67_0/boost/uuid/uuid_io.hpp:100:32: error: expected unqualified-id before ‘=’ token
             unsigned char byte = static_cast<unsigned char>(std::distance(&xdigits[0], f));
                                ^
/home/xxx/boost_1_67_0/boost/uuid/uuid_io.hpp:110:18: error: expected unqualified-id before ‘<<=’ token
             byte <<= 4;
                  ^~~
/home/xxx/boost_1_67_0/boost/uuid/uuid_io.hpp:111:18: error: expected unqualified-id before ‘|=’ token
             byte |= static_cast<unsigned char>(std::distance(&xdigits[0], f));

原因是前面有個頭文件裏:

#define byte char

byte已經被替換成char了,所以出錯了。
這個修改也簡單,把這個頭文件提到有宏定義的頭文件前面去就可以了。
所以儘量不用#define,會出奇怪問題,錯誤還不容易看出來。
不過boost用byte做變量名也太不妥了,用byte做type定義的很常見啊,太容易出問題了。
這個提示unqualified-id,我也服了,一般翻譯都不知道他啥意思,看了qualified,有個意思是有保留,關鍵字又叫保留字,我猜他意思是希望有個不是關鍵字的id。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章