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