回答
沒有混合使用C++和C代碼。雖然你肯定可以在C++中使用cout
,你也可以使用printf
。絕大多數合法的C代碼都是合法的C++代碼。實際上,如果您的代碼爲#include
的<cstdio>
,則C++標準的第27.8.2節要求定義printf
。
我需要包括
你可以包括'
那麼兩者之間有什麼區別 – Programmer 2012-01-09 13:54:27
是的,C和C++(除了極少數例外)都可能且易於混合。您可能遇到問題的一個示例是混合printf和cout,輸出可能不會按照您期望的順序進行。
在C++中,C運行庫是可用的,因爲C++在很大程度上與C通過設計兼容,以便向後兼容。也就是說,如果你正在編程C++,你應該儘可能避免使用C運行時,因爲C++在功能和安全性方面提供了更多的功能。例如矢量,串
從技術上講,是的,你可以混合C和C++代碼。 C++是C的一個近似超集,並且具有所有C庫(除了一些細微差別外)。
但是,不管你是否應該混合C和C++是另一回事。一般來說,如果你用C++編寫,你應該堅持C++結構。
「堅持C++結構」是什麼意思? 'printf'不是C++構造?那麼'int32_t'是一個C++構造嗎? – 2012-01-09 09:44:09
是的,如果你想變得迂腐。我主要是指在C++中添加的複製現有C功能的功能。 ('printf()'/'cout',arrays/vectors,cstring /'string')並不是說它們不能在C++中使用(並且在某些情況下它們必須使用),但是C++確實使它們更容易處理用。 – Mysticial 2012-01-09 19:51:41
當然你可以!但請確保您將代碼保存在.cpp文件中。某些編譯器不會在.c文件中編譯C++代碼。
C++包含(大部分)C作爲子集(儘管這不是一個嚴格的子集)。如果你可以使用printf等東西,除非你有一個很好的理由,你應該堅持使用C++構造(std::vector, std::cout, new, delete,
等)。
是的,你可以混合使用2碼,但隨後產生的代碼應該是在C++中,如果你不願意編輯與C與C兼容++落後於大多數代碼
。爲了讓C++編譯器知道您撥打C代碼:
#ifdef __cplusplus
extern "C" {
#endif
void myCFunction();
#ifdef __cplusplus
}
#endif
- 1. 混合Objective-C和C++代碼
- 2. 是否可以編譯c/C++混合源代碼?
- 3. 將VB.net代碼與c#代碼混合
- 4. 我們可以使用swift和objective-c混合代碼構建和上傳ios應用程序嗎?
- 5. 混合C和C++
- 6. c和C++混合
- 7. c#,C++和C的混合
- 8. QT和C#:我可以將它們混合進行移動開發嗎?
- 9. 我可以用ruby編碼objective-c混合嗎?
- 10. 我們可以轉換的OData元數據,以C#代碼(datacontract)
- 11. 我們可以拼接圖像混合
- 12. 如何編譯混合的C和C++代碼?
- 13. 混合的Objective-C與C和代碼組織
- 14. 混合使用C和C++代碼的產量在GCC
- 15. 混合C/C++源代碼:在C代碼中獲取sizeof(C++ struct)
- 16. 我可以寫代碼混合(EMO框架和Cocos2d)
- 17. 在Windows上用Visual Studio混合C#代碼和未被管理的C++代碼
- 18. 與Berkeley DB混合的C++/CLI代碼
- 19. 用CMAKE混合C和C++
- 20. 混合C和Objective-C
- 21. 混合C++和Objective C的
- 22. 問題混合C和C++
- 23. 我們可以在C#.net
- 24. 我們可以使用googletest(gtest)來測試C代碼
- 25. 我們可以結合Angular指令和工廠的代碼嗎?
- 26. 混合JavaScript和C#
- 27. 混合c#和vC++
- 28. 混合gtk +和C++
- 29. 我們可以用C語言的語法編寫Objective-C代碼嗎?
- 30. 結合C#和JavaScript代碼
是的,小心你可以混合它們。不,通常不可取。使用'cout'可以爲您提供'printf()'缺少的類型安全性以及可擴展性。用它。 – 2012-01-09 07:07:05
cplusplus.com因文檔和示例中的錯誤而出名。 – 2012-01-09 07:07:25
@JonathanLeffler爲什麼評論?這是一個非常有效的答案,不是嗎? – 2012-01-09 07:08:15