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