在C++ 17的cstddef文件中引入了 一種std::byte類型,在部分項目升級時往往會與系統中的byte定義沖突,導致編譯失敗。
但std::byte類型是在std命名空間下,根本的問題在於using namespace濫用,所以需要比以往更加注意以下語句的用法:
using namespace std;
(1)總體原則是該語句不要出現在系統頭文件之前;
(2)最安全的方法是:編寫健壯的工業級代碼從棄用using namespace語句開始;
(2)較安全的方法是:該語句只出現在cpp文件中,h文件中使用std::前綴;
(4)謹慎采用方法是:在h文件不存在其它h文件引用的情況下,可以在h文件所有的#include語句后面使用該語句。
注:如使用者能熟練掌握第(1)條,則不必管(2)(3)(4)條。
如果是在項目代碼中存在byte重定義問題而非SDK本身代碼中存在沖突,在自己項目代碼中明確指定byte定義的命名空間即可。