2010-01-28 117 views
4

我正在學習C++(顯然是CLI),每當我發佈一個問題說我使用C++時,有人跳下我的喉嚨,說我沒有使用C++,但C++/CLI。我並不確定有什麼區別,因爲我對此極爲陌生,但似乎讓每個人都感到不安。任何人都可以照亮一些差異?C++和C++ CLI有什麼區別

作爲第二個說明,我問這個問題的原因是因爲有人建議我使用CLI來能夠make a method accessible to my C# project。通過我的構造函數,我的C++項目中的一切都運行良好,但現在我希望能夠從我的C#項目中調用相同的方法。

回答

1

Wikipedia's page在C++/CLI上有一些很好的信息。

+11

不像這個答案,它有* zero *信息。請提供摘要,以便閱讀此文的人可能會找到問題的答案。在SO上簡單地鏈接到外部資源被認爲是不好的風格。 – jalf 2010-01-28 20:30:45

+0

@jalf,現在來吧,我的答案確實有一些*信息,它有一個鏈接到維基百科:)。我不覺得很難遵循一個鏈接來獲得比我能提供的更完整的答案。 – Trent 2010-01-28 21:07:12

+3

首先,如果鏈接失效怎麼辦?被破壞?被刪除?其次,對這個問題的答案感興趣的人可能想要閱讀多個答案。如果每個答案都只是一個外部資源的鏈接,那麼突然間就有很多工作要做。第三,你在SO上的代表應該代表*你的知識和樂於助人。在這種情況下,您已經顯示*零*知識,因此您的帖子現在保證爲-1而沒有別的。 – jalf 2010-01-28 21:47:54

2

C++ CLI在「公共語言接口」上運行。這基本上意味着當它被編譯時,編譯後的代碼將最終分配爲像通過C#生成的字節代碼。

C++ CLI添加了大量擴展,比如C++中不存在的垃圾收集。 C++ CLI還允許「安全」的C++代碼。在這種模式下,您不允許使用指針。在C++中沒有「安全」的代碼,它都是「不安全的」。 C++ CLI可以很好地連接.NET代碼和C++庫,但除此之外,我還沒有找到它的用處。

的維基百科頁面有一個很好的概述:http://en.wikipedia.org/wiki/C%2B%2B/CLI

是的,他們是正確的你蹦能在C++ CLI編程不會讓你在C++編程......他們是不同的足以讓你不能混合它們。

1

AFAIK,C++ CLI允許您訪問.net框架。

它提供了一些垃圾收集和其他一些特定的功能不是C++

2

C++直接運行二進制符合你的硬件。 C++ cli是一個C++擴展,用於與MS公共語言運行庫進行交互。它通常符合IL,並在.net運行時內執行。垃圾收集以及繼承和接口是如何工作的,兩者之間有許多不同之處。

使用c + + Cli的原因是獲得了使用框架提供給您的數百個類的優勢。這些都可以從任何CLR兼容的語言訪問,所以有些人一直想知道爲什麼會用C++來訪問框架,除非你鏈接到一些遺留代碼。

+1

只要不使用ref類,就可以編譯cli項目中的C++代碼,正常的C++語法規則適用,並且您當然可以鏈接和使用標準C++庫。 – rerun 2010-01-28 19:41:53

+0

@Neil:C++/CLI幾乎是C++的超集(減去大多數其他C++編譯器也沒有實現的'export'),所以大多數合法的C++也將編譯爲C++/CLI。也就是說,幾乎所有C++/CLI代碼都使用擴展,所以它甚至不像C++那麼相似。 – 2010-01-28 19:54:55