首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ cname 頭文件函數為何可不加 std:: 直接使用?

     編輯:程式設計疑難解答

《C++ Primer》第 82 頁提到 <cname>(如 <cmath>、<cstring>)頭文件屬於 std 命名空間,但許多編譯器允許不加 std:: 前綴直接調用 sin()、strlen() 等函數。原因有二:

  1. using namespace std; 若代碼中存在此聲明,所有 std 命名空間符號自動進入全局作用域。
  2. 編譯器向後兼容:C++ 標準要求 <cname> 將符號放入 std,但允許實現同時也將其放入全局命名空間(C 風格)。GCC、MSVC、Clang 默認都這樣做,以支持舊 C 代碼遷移。

最佳實踐

雖然當前編譯器普遍支持無前綴調用,但標準不保證這一行為。為代碼可移植性、避免命名衝突,建議始終显式使用 std::sin、std::strlen 或在局部作用域 using std::sin;。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved