我注意到一些C++教科書使用C函數,如printf
作爲std::printf
(包括通過<cstdio>
而不是<stdio.h>
)。但是,在我看到的大多數C++代碼(包括專業開發人員編寫的代碼)中,他們只是使用了<stdio.h>
和printf
。沒有任何理智的程序員會將其功能命名爲printf
或任何着名的C函數名稱,因爲其他讀者可能會感到困惑。我們應該在std命名空間中使用C函數嗎?
除了輸入更多字符之外,使用std::printf
看起來沒有真正的好處。
我注意到一些C++教科書使用C函數,如printf
作爲std::printf
(包括通過<cstdio>
而不是<stdio.h>
)。但是,在我看到的大多數C++代碼(包括專業開發人員編寫的代碼)中,他們只是使用了<stdio.h>
和printf
。沒有任何理智的程序員會將其功能命名爲printf
或任何着名的C函數名稱,因爲其他讀者可能會感到困惑。我們應該在std命名空間中使用C函數嗎?
除了輸入更多字符之外,使用std::printf
看起來沒有真正的好處。
C++中的命名空間允許您定義與C函數衝突的函數。包括cstdio
而不是stdio.h
和使用std::printf
允許你有一個稱爲rename
的函數,而不會與stdio
的重命名衝突。實際上,這就是命名空間的用途。
除了C標準庫中的所有名稱都保留在全局名稱空間中。 – aschepler
只是不同程度的迂腐。 –
如果'printf()'在一些其他庫(包括你自己的)中定義,'std ::'將表明你正在使用'cstdio'中的一個: – PhotometricStereo
我相信這篇文章可能會解釋一些東西。 http://stackoverflow.com/questions/10460250/cstdio-stdio-h-namespace – soundslikeodd