CLI / C ++. Чем он отличается от «нормального» C ++ или Visual C #? - PullRequest
0 голосов
/ 26 ноября 2011

Я программировал некоторые не амбициозные, маленькие программы в моей школе в Dev C ++ целую вечность в школе. Но теперь вышло, мне нужно сделать приложение окна. Я видел, как некоторые люди использовали визуальную студию для этого.

Несколько дней назад я получил Visual Studio C ++ express, и после некоторого времени написания кода я понял, что он сильно отличается от "обычного" C ++, который я использовал до сих пор. Даже объявления строк вызывают у меня головную боль. Я хотел спросить, может быть, Visual C # будет больше похож на то, что я знаю, или, может быть, есть какой-то другой способ для меня, чтобы кодировать окно приложения на C ++, я знаю, используя интерфейс перетаскивания, когда дело доходит до создания кнопок, текстовые поля и прочее (как в визуальной студии)?

Итак, самое главное, Visual C # больше похож на "нормальный" c ++, и если нет, у вас, ребята, есть предложения по замене Visual? любая помощь приветствуется.

1 Ответ

3 голосов
/ 26 ноября 2011

C ++ и C ++ / CLI, на самом деле просто разные языки, предназначенные для разных целей.C ++ / CLI разработан с одной целью - CLR и, таким образом, предоставляет указатели, интерфейсы, делегаты и тому подобное, как компоненты первого класса языка.C ++ / CLI спроектирован таким образом, что большая часть кода, который является допустимым C ++, может быть скомпилирована для нацеливания на CLR без переписывания.Недостатком здесь является то, что при компиляции существующего кода C ++ обычно используются собственные указатели, которые не могут быть выражены в CLR, если он не переведен в режим unsafe.Это означает, что вы не можете запускать такой скомпилированный код в средах с частичным доверием, таких как Sliverlight или Windows Phone.

C ++, с другой стороны, является языком программирования общего назначения, предназначенным для всех компьютерных систем, от самых крупныхмейнфрейм для самого маленького микроконтроллера.Нет доступных функций, таких как указатели или делегаты для сбора мусора, потому что на некоторых типах оборудования предоставление таких функций будет крайне затруднено.

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

Теперь, чтобы решить ваши конкретные проблемы:

Даже объявления строк вызывают у меня головную боль.

C ++ / CLI предоставляет тип System::String как часть своей библиотеки базовых классов.Стандартный C ++ также предоставляет std::basic_string (который является typedef'd к std::string, когда специализируется для char). Поэтому вы можете увидеть некоторые виды конфликтов, и единственный способ справиться с этим, как правило, указать тот, который вы хотитеявно.

Я хотел бы спросить, может быть, Visual C # будет больше похож на то, что я знаю, или, может быть, есть какой-то другой способ для меня, чтобы кодировать приложение окна в C ++, я знаю, используя перетаскиваниеи отбросить интерфейс, когда дело доходит до создания кнопок, текстовых полей и прочего (как в Visual Studio)?

EDIT : в Visual Studio 2010 может больше не действовать следующее.У меня не было возможности проверить.(См. Комментарии к этому ответу для получения более подробной информации)

В Visual Studio нет инструмента визуального конструктора для создания приложений C ++.Есть дизайнеры для WPF и Windows Forms, которые являются технологиями CLR.Чтобы использовать эти дизайнеры, вы должны использовать C ++ / CLI, а не C ++.

...