2010-01-28 6 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

В отличие от этого ответа, который имеет * ноль * информацию. Просьба представить резюме, поэтому люди, читающие это, могут действительно найти ответ на вопрос. Простое соединение с внешними ресурсами считается неправильным. – jalf

+0

@jalf, давай, мой ответ действительно имеет * некоторую * информацию, у него есть ссылка на Википедию :). Мне не сложно следовать ссылке, чтобы получить более полный ответ, чем я мог бы предоставить. – Trent

+3

Во-первых, что, если ссылка не работает? получает вандализм? удаляется? Во-вторых, кто-то, кто интересуется ответом на этот вопрос, может захотеть прочитать более одного ответа. Если каждый ответ - это просто ссылка на внешний ресурс, то это неожиданно большая работа. И в-третьих, ваш представитель на SO должен представлять * ваши * знания и полезность. В этом случае вы показали свои знания * zero *, и поэтому ваш пост в его нынешнем состоянии гарантирует -1 и ничего больше. – jalf

2

C++ CLI работает на «Common Language Interface». Это в основном означает, что когда он скомпилирован, скомпилированный код будет выделен как байтовый код, созданный с помощью C#.

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

На странице Википедии есть хороший обзор: http://en.wikipedia.org/wiki/C%2B%2B/CLI

И да, они имеют право прыгать на вас за то, что в состоянии запрограммировать в CLI C++ не позволит программировать на C++ .... они отличаются достаточно, чтобы вы не могли просто смешать их.

1

AFAIK, C++ CLI позволяет получить доступ к инфраструктуре .net.

Он предлагает некоторый сбор мусора и несколько других особенностей не на C++

2

C++ работает непосредственно в двоичном виде выполнил для вашего оборудования. C++ cli - это расширение C++, которое используется для взаимодействия с исполняемой средой общего языка MS. Он соответствует IL обычно и выполняется внутри .net runtime. Существуют многочисленные различия между двумя основными из них: сбор мусора и как работают наследование и интерфейсы.

Причина использования C++ Cli - это преимущества использования сотен классов, предоставленных вам инфраструктурой. Все они доступны с любого языка, совместимого с CLR, поэтому некоторым оставалось задаться вопросом, почему можно использовать C++ для доступа к инфраструктуре, если вы не связываетесь с каким-то унаследованным кодом.

+1

Вы можете скомпилировать код C++ внутри проекта cli, если вы не используете нормальный класс ref. Стандартные синтаксические правила C++ применяются, и вы можете, конечно, связать и использовать стандартные библиотеки C++. – rerun

+0

@Neil: C++/CLI - это почти надмножество C++ (минус такие вещи, как 'export ', которые не выполняются большинством других компиляторов C++), поэтому большинство законных C++ также будут компилироваться как C++/CLI. Тем не менее, практически все C++/CLI-коды используют расширения, поэтому он даже не очень похож на C++. –

Смежные вопросы