2012-01-09 77 views
1

我讀這個網站我們可以混合C和C++代碼

http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

這是一個C++網站。但是,它使用printf顯示的東西。但是,我認爲在C++中,我們使用cout來顯示事物。我們可以像這裏所做的那樣混合使用c和C++代碼。

+0

是的,小心你可以混合它們。不,通常不可取。使用'cout'可以爲您提供'printf()'缺少的類型安全性以及可擴展性。用它。 – 2012-01-09 07:07:05

+1

cplusplus.com因文檔和示例中的錯誤而出名。 – 2012-01-09 07:07:25

+0

@JonathanLeffler爲什麼評論?這是一個非常有效的答案,不是嗎? – 2012-01-09 07:08:15

回答

7

沒有混合使用C++和C代碼。雖然你肯定可以在C++中使用cout,你也可以使用printf。絕大多數合法的C代碼都是合法的C++代碼。實際上,如果您的代碼爲#include<cstdio>,則C++標準的第27.8.2節要求定義printf

+0

我需要包括。我不能只包括 Programmer 2012-01-09 08:45:24

+0

你可以包括''。 – 2012-01-09 08:45:59

+0

那麼兩者之間有什麼區別 – Programmer 2012-01-09 13:54:27

1

是的,C和C++(除了極少數例外)都可能且易於混合。您可能遇到問題的一個示例是混合printf和cout,輸出可能不會按照您期望的順序進行。

1

在C++中,C運行庫是可用的,因爲C++在很大程度上與C通過設計兼容,以便向後兼容。也就是說,如果你正在編程C++,你應該儘可能避免使用C運行時,因爲C++在功能和安全性方面提供了更多的功能。例如矢量,串

3

從技術上講,是的,你可以混合C和C++代碼。 C++是C的一個近似超集,並且具有所有C庫(除了一些細微差別外)。

但是,不管你是否應該混合C和C++是另一回事。一般來說,如果你用C++編寫,你應該堅持C++結構。

+1

「堅持C++結構」是什麼意思? 'printf'不是C++構造?那麼'int32_t'是一個C++構造嗎? – 2012-01-09 09:44:09

+0

是的,如果你想變得迂腐。我主要是指在C++中添加的複製現有C功能的功能。 ('printf()'/'cout',arrays/vectors,cstring /'string')並不是說它們不能在C++中使用(並且在某些情況下它們必須使用),但是C++確實使它們更容易處理用。 – Mysticial 2012-01-09 19:51:41

1

當然你可以!但請確保您將代碼保存在.cpp文件中。某些編譯器不會在.c文件中編譯C++代碼。

1

C++包含(大部分)C作爲子集(儘管這不是一個嚴格的子集)。如果你可以使用printf等東西,除非你有一個很好的理由,你應該堅持使用C++構造(std::vector, std::cout, new, delete,等)。

0

是的,你可以混合使用2碼,但隨後產生的代碼應該是在C++中,如果你不願意編輯與C與C兼容++落後於大多數代碼

0

。爲了讓C++編譯器知道您撥打C代碼:

#ifdef __cplusplus 
extern "C" { 
#endif 

void myCFunction(); 

#ifdef __cplusplus 
} 
#endif