」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼在 C++ 中使用 `` 時,`printf` 在 `std::printf` 和 `printf` 中都可以運作?

為什麼在 C++ 中使用 `` 時,`printf` 在 `std::printf` 和 `printf` 中都可以運作?

發佈於2024-12-21
瀏覽:231

Why does `printf` work in both `std::printf` and `printf` when using `` in C  ?

cstdio Stdio.h 命名空間

cstdio Stdio.h 命名空間

的C 參考文件中,它聲稱所有庫元素都駐留在std命名空間內。然而,實驗表明 std::printf 和 printf 函數呼叫都可以工作。這是否表示 C 頭檔案將符號名稱匯入 std 和全域命名空間?

答案

包括 將符號名稱匯入 std 命名空間中,並且可能全域命名空間。相反,包含 將符號名稱匯入到全域命名空間中,也可能將它們合併到 std 命名空間中。

此行為擴展到所有 C 樣式標頭。根據C 11 標準(附錄D),C 標準庫頭的行為如下:

"2 每個C 頭,每個頭都有一個name.h 形式的名稱,其行為就好像每個名稱都放置在在標準庫命名空間中通過相應的cname 頭放置在全域命名空間範圍內。中聲明或定義,然後透過注入到全域命名空間中using-聲明,反之亦然。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3