出錯如下:
/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。