Каковы преимущества C ++ / CLI (ранее «Managed C ++») над стандартным C ++? - PullRequest
7 голосов
/ 26 декабря 2010

Самый близкий вопрос, который я нашел в SO, был этот , но ответы на самом деле касались преимуществ C ++ / CLI перед C # .

Мне нужнопонять преимущества C ++ / CLI над стандартными C ++ .

Ответы [ 5 ]

13 голосов
/ 26 декабря 2010

C ++ / CLI и Managed C ++ (или Managed Extensions for C ++ ) - это две разные вещи.Managed C ++ является предыдущей версией и имеет некоторые синтаксические различия.Это также не рекомендуется в пользу C ++ / CLI.

C ++ / CLI является расширением ISO C ++, поэтому сравнение является спорным.Это позволяет писать код, который будет работать на CLR.Таким образом, то, хотите ли вы использовать это расширение, зависит от того, нужно ли вам писать что-то на C ++, что также необходимо для взаимодействия с языком CIL (например, C #).

Например, есливам нужно использовать устаревшую библиотеку, написанную на C или C ++, в приложении .NET, вы можете написать для нее оболочку C ++ / CLI.

11 голосов
/ 27 декабря 2010

Одна вещь, о которой я еще не упоминал в ответах (вероятно, потому, что это скорее недостаток, но это актуальное соображение), - это то, что C ++ / CLI имеет тенденцию получать лечение второго класса.Microsoft использовала , чтобы выдвинуть его в качестве замены для C ++.они хотели, чтобы нативные разработчики переключились на .NET, и способ сделать это - написать C ++ / CLI вместо C ++.

Теперь они отказались от этого, и C ++ / CLI отводится на рольязык взаимодействия.Microsoft рекомендует использовать его, когда вам нужно смешать собственный код C ++ и .NET, вы можете использовать C ++ / CLI в качестве «моста» между ними, в то время как C ++ снова является первоклассным языком.

C ++/ CLI также отстает в определенных отношениях:

  • В Visual Studio 2010 Intellisense больше не работал для C ++ / CLI.В какой-то момент он будет снова включен, но сейчас его уже нет.
  • VS2010 добавляет поддержку частей C ++ 0x, хотя, насколько я знаю, пока не все из них работает с C ++ / CLI,Опять же, предполагается, что Microsoft поддерживает синхронизацию двух языков, но могут быть задержки при добавлении новых функций в язык C ++, прежде чем они станут доступны в C ++ / CLI.

Итакесли вы хотите писать код .NET, используйте «настоящий» язык .NET, такой как C #.Если вы хотите написать C ++, используйте «настоящий» нативный C ++.И если вы хотите смешать два, используйте C ++ / CLI для написания кода взаимодействия.

3 голосов
/ 27 декабря 2010

Вот мнение Бьярна Страуструпа о C ++ / CLI . Я был удивлен этим, потому что в последний раз, когда я читал это, это было гораздо более негативно. (Похоже, что Microsoft уже присоединилась к его просьбе о том, что они поддерживают четкое различие между C ++ / CLI и ISO C ++ во всей своей документации.)

3 голосов
/ 26 декабря 2010

Основным преимуществом является доступ к .net framework и другому коду, написанному на других языках .net.

1 голос
/ 26 декабря 2010
  • Он дает вам доступ к потрясающему диапазону функций в .NET Base-Class-Library и т. Д., Наряду с тем, что вы уже можете делать в C ++.

  • Если вы так склонны, вы можете иметь большую часть кода в чистых сборках C # и использовать C ++ только при необходимости.

...