首頁  >  文章  >  後端開發  >  為什麼在 C 中使用 `` 時,`printf` 在 `std::printf` 和 `printf` 中都可以運作?

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

Barbara Streisand
Barbara Streisand原創
2024-10-26 05:43:30517瀏覽

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

cstdio Stdio.h 命名空間

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

答案

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

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

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

以上是為什麼在 C 中使用 `` 時,`printf` 在 `std::printf` 和 `printf` 中都可以運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn