Проблема с C++ Intellisense и проверкой ошибок

Использую Visual C++ 2008. Впервые экспериментирую с переходом с C# и хочу попробовать свои силы. Я не сильно изменил базовые настройки, за исключением нескольких вещей, таких как смарт-блок и, возможно, несколько цветов. Поскольку я на нулевом уровне знаний С++, все поиски в Google, которые я сделал, выше моей головы.

Часть 1 проблемы Моя проблема в том, что я только что создал свой первый проект формы Windows. теперь, когда я дважды щелкаю и перехожу к чему-то подобному, intellisense не перечисляет никаких участников?

private: System::Void executeDocumentationCmd_Click(System::Object^  sender, System::EventArgs^  e) 
{
this. NOTHING POPS UP?
}

Если я наберу MessageBox::, появится всплывающее окно intellisense для Show. Это нормально? Я считаю полезным, когда я изучаю основы, иметь список доступных текстовых полей и членов, но он не будет делать этого, как в С# intellisense.

У меня stdafx.h включено. Я удалил файл ncb в онлайн-справке и перезапустил, ничего. Дополнительные заголовки?

Часть 2 проблемы: нет подчеркнутых ошибок при кодировании в реальном времени, как при редактировании C#. Является ли это функцией C++ Express (проверка ошибок перед компиляцией)? Я не вижу никаких предупреждений или ошибок в списке, поскольку я ввожу неверную информацию.


person sheldonhull    schedule 08.04.2009    source источник


Ответы (3)


this в C++ — это указатель, который разыменовывается ->, а не ..

Кроме того, intellisense для C++ в VS2008 не так полезен, как в C#, включая отсутствие проверки ошибок. В VS2010 будет введена встроенная проверка ошибок для C++.

Между C# и C++ существуют очень большие различия, о которых вам необходимо знать. Это большая тема, поэтому я не думаю, что пост здесь может обобщить их, но два важных момента — это отсутствие сборки мусора (ищите ключевое слово delete) и указатели. Указатели существуют в C#, но они доступны только в unsafe блоках кода, тогда как в C++ указатели являются почти королем. Вы можете инвестировать в книгу, которая поможет вам в обучении.

person Jeff Yates    schedule 08.04.2009
comment
ой! я чувствую себя довольно глупо, как только я сделал ваш знак со стрелкой, выскочил интеллект ... что касается проверки ошибок ... неудивительно, что я не мог ее найти! Ржунимагу. Новое для меня. Есть идеи, когда выйдет релиз Express 2010 C++? - person sheldonhull; 08.04.2009
comment
Правильно. Я только что прошел курс среднего уровня С#... и решил, что С++ - это то, на чем я хотел бы сосредоточить свою энергию, а затем вернуться к С# позже (или продолжать учиться на стороне)... сейчас я получу книгу Я экспериментировал с простыми строковыми функциями, чтобы немного с ними познакомиться. Благодарность! - person sheldonhull; 08.04.2009
comment
Пожалуйста. Приятно видеть, что вы решились на этот шаг. C++ — очень мощный язык, и он может быть довольно сложным, но ваша работа с C# будет богаче, а ваше понимание Windows — лучше, если вы изучите C++. - person Jeff Yates; 08.04.2009

К вашему сведению, согласно вашему фрагменту кода, вы на самом деле используете не C++, а C++/CLI, который является другим языком.

person Nemanja Trifunovic    schedule 08.04.2009
comment
хорошо .... я только что прочитал это и обнаружил это в Google ... отзывы о версии cli кажутся отрицательными. Я хочу удалить себя из .net framework, так как я планирую попробовать свои силы в разработке игр... Рекомендация на данный момент для бесплатного визуального ориентирования (формы) С++? БЕЗ .netframework? - person sheldonhull; 08.04.2009
comment
также очень сложно разрабатывать приложения оконных форм без .net framework? c# кажется настолько проще, что отклониться от .net кажется трудным - person sheldonhull; 08.04.2009
comment
Посмотрите на это обсуждение и решите (если сможете): stackoverflow.com/questions/115045/ - person Nemanja Trifunovic; 08.04.2009

Немного истории: C++ был специально разработан для совместимости с C, чего не было у C# и Java. Одним из следствий этого является то, что C++ сложно анализировать, поэтому сложнее заставить работать intellisense для C++, чем для C#. Я нахожу это ненадежным и надеюсь, что в VS 2010 это будет лучше.

Кроме того, C и C++ имеют гораздо большее различие между переменными и указателями, чем большинство языков. Я не знаком с C#, но в таких языках, как Java и Common Lisp, почти все является указателем, поэтому специальных обозначений нет. Когда я работал с Паскалем, с указателями делалось очень мало вещей. C и C++ — это языки, которые я использовал с наибольшей вероятностью путаницы. Они также допускают арифметику указателей, что является причиной очень многих ошибок.

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

person David Thornley    schedule 08.04.2009