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

ел противоречивые ответы в Интернете о том, является ли C ++ / CLI надмножеством C ++ или нет.

Принятый ответпо этому вопросу утверждает, что «технически нет», но не приводит примеры кода не-C ++ / CLI, который соответствует ISO C ++. Другой ответ на этот вопрос приводит книгу, в которой говорится об обратном.

Итак, не могли бы вы дать точные ответыс примером кода что не получается на C ++ / CLI или ссылаться на надежный источник (например, MSDN) по этому вопросу?

У меня был кто-то, кто обсуждает эту тему сегодня, и подумал, что хотел бы сообщить себе, но я не нашел четкого ответа в другом месте!

 GManNickG06 янв. 2011 г., 01:31
Я не публикую в качестве ответа, потому что я не уверен в этом, но разве что-то простое не будет примером:int main() { int gcnew = 5; } посколькуgcnew такое ключевое слово?

Ответы на вопрос(2)

Решение Вопроса

Действительный C ++, неправильный C ++ / CLI:

int main()
{
    int gcnew = 42;
}

gcnew, generic, а такжеnullptr все зарезервированные слова в C ++ / CLI;nullptr Конечно, это не проблема в C ++ 0x. Херб Саттер написал оКлючевые слова C ++ / CLI: под капотом в 2003 году.

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

 James McNellis06 янв. 2011 г., 02:14
@ D.Shawley: Нет, точно так же, как в C ++, вы можете упасть до конца.
 James McNellis06 янв. 2011 г., 01:46
@ Йоханнес: я не думаю, что^ или же% пунктуаторы будут проблемой; Цель C также использует^ (для блоков). Я нигде не могу думать, что компилятор может запутаться.
 D.Shawley06 янв. 2011 г., 02:09
Просто из любопытства, требует ли C ++ / CLIreturn заявление вmain случайно?
 Johannes Schaub - litb06 янв. 2011 г., 01:40
Благодарю. Хорошая ссылка! Я думаю, что это место. Интересно, есть ли какие-либо семантические проблемы или другие проблемы с парсером (например,^ описатель)? Похоже, не так.

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

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

Ваш ответ на вопрос