2
我想使用C庫如cstdio
和cstdlib
,我可以同時使用:我應該使用std :: old_c_functions還是隻使用old_c_functions?
int i = atoi("123");
或
int i = std::atoi("123");
都工作得不錯。我應該使用哪一個?它們是否相同?
我想使用C庫如cstdio
和cstdlib
,我可以同時使用:我應該使用std :: old_c_functions還是隻使用old_c_functions?
int i = atoi("123");
或
int i = std::atoi("123");
都工作得不錯。我應該使用哪一個?它們是否相同?
對於便攜性,你應該使用std
版本,原因有二:
atoi
,但是數學函數)在C++中有額外的重載。至少有一個流行的庫將C重載轉儲到全局名稱空間,但不是C++重載。這意味着如果您更改了實現方式,您的代碼可能會以奇怪和令人生氣的方式改變其行爲。
那麼'std :: atoi'是C++標準的'atoi',那麼爲什麼還要使用非標準的呢? –
[cstdio stdio.h namespace]可能的重複(http://stackoverflow.com/questions/10460250/cstdio-stdio-h-namespace) – 2014-02-24 05:18:06
我認爲這也取決於您的優化級別。如果你能夠在O2或更高版本上編譯你的代碼,這兩種方法幾乎沒有區別。如果您必須使用O0或O1,則最好只使用'atoi': – P0W