解決啟用C++17后byte重定義的問題(byte ambiguous )


在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定義的命名空間即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM