簡體   English   中英

為什么不需要“使用std :: xxx” <cmath> 職能?

[英]Why isn't “using std::xxx” needed for <cmath> functions?

對於您可以包括的所有其他標准庫頭,有必要通過以下任何一種方法指定名稱空間:

using namespace std;
using std::xxx;
int main() {
    std::xxx;
}

到目前為止,我遇到的唯一異常是在<cmath>庫中,因為到目前為止,我使用的所有函數都不需要上面的任何函數即可在不指定名稱空間的情況下使用它們。 這是為什么?

注意:我可能錯了,因為<cmath>是唯一不需要指定名稱空間的標准庫頭,或者<cmath>中的每個函數的行為都像這樣。 我只是沒有遇到日常使用中所說的例外。

C ++標准允許實現將在標准C標頭中聲明的名稱放置在全局名稱空間中。

來自C ++標准(17.6.1.2標頭)

  1. ...但是,在C ++標准庫中,聲明(除了在C中定義為宏的名稱)在名稱空間std的名稱空間范圍(3.3.6)之內。 尚不確定這些名稱是否先在全局名稱空間范圍內聲明,然后通過顯式using-declaration(7.3.3)注入到名稱空間std中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM