在 C 中使用 C 頭檔:命名空間還是全域作用域?
在 C 中,可以透過修改頭檔來存取 C 函數和頭檔名稱(例如,stdio.h 到 cstdio、stdlib.h 到 cstdlib)。然而,它提出了一個問題,即在 C 程式碼中對於這些標頭是否使用 std:: 命名空間中的函數或全域命名空間。
C 中的命名空間與全域作用域
根據C 11 標準,每個有「.h」副檔名的C 頭檔的行為就好像其名稱被放置在全域命名空間和std 命名空間中一樣。這些名稱是否首先在 std:: 命名空間中宣告並注入到全域命名空間中,還是反之亦然,尚未指定。
首選方法
確保與未來的兼容性C 修訂並消除潛在的歧義,建議使用“cname”標頭並在std:: 命名空間內聲明和定義函數。使用舊的“.h”標頭已被棄用,並已確定在即將發布的版本中刪除。
範例程式碼
首選以下程式碼snippet:
#include <cstdio> int main() { std::printf("Hello world\n"); }
over:
#include <stdio.h> int main() { printf("Hello world\n"); }
over:
雖然可以同時使用std:: 和C 的全域命名空間C 中的函數和頭文件,首選方法是包含「cname」頭檔並使用std:: 命名空間中的宣告和定義為了與未來的C 修訂版保持一致並避免潛在的問題。以上是應該從 C 中的 `std::` 命名空間還是全域命名空間使用 C 函數和頭檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!