2016-09-22 56 views
1

我注意到一些C++教科書使用C函數,如printf作爲std::printf(包括通過<cstdio>而不是<stdio.h>)。但是,在我看到的大多數C++代碼(包括專業開發人員編寫的代碼)中,他們只是使用了<stdio.h>printf。沒有任何理智的程序員會將其功能命名爲printf或任何着名的C函數名稱,因爲其他讀者可能會感到困惑。我們應該在std命名空間中使用C函數嗎?

除了輸入更多字符之外,使用std::printf看起來沒有真正的好處。

+4

只是不同程度的迂腐。 –

+1

如果'printf()'在一些其他庫(包括你自己的)中定義,'std ::'將表明你正在使用'cstdio'中的一個: – PhotometricStereo

+3

我相信這篇文章可能會解釋一些東西。 http://stackoverflow.com/questions/10460250/cstdio-stdio-h-namespace – soundslikeodd

回答

0

C++中的命名空間允許您定義與C函數衝突的函數。包括cstdio而不是stdio.h和使用std::printf允許你有一個稱爲rename的函數,而不會與stdio的重命名衝突。實際上,這就是命名空間的用途。

+0

除了C標準庫中的所有名稱都保留在全局名稱空間中。 – aschepler

相關問題