Проблема с C ++ Intellisense и проверка ошибок - PullRequest
0 голосов
/ 08 апреля 2009

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

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 08 апреля 2009

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

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

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

1 голос
/ 08 апреля 2009

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

0 голосов
/ 08 апреля 2009

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

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

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

...