2008-10-02 5 views
0

Обычно я программирую на C#, но вынужден выполнять некоторую работу на C++. Похоже, что интеграция с Visual Studio (2008) действительно бедна по сравнению с C#, но мне было интересно, есть ли хорошие инструменты, плагины или конфигурации, которые могут улучшить ситуацию.Как настроить VS2008 для эффективной разработки на C++

Другой пост указал программу Visual Assist X, которая по крайней мере помогает в некоторых вещах, таких как рефакторинг (хотя для меня это немного дороже). Моя основная проблема заключается в том, что ошибки компиляции дают мало информации о том, что не так, и я большую часть своего времени уделяю тому, что я сделал неправильно. Он просто чувствует, что возможно статически проверять гораздо больше ошибок, чем VS. И почему он не дает синих подчеркиваний, как с C#, это не должно быть слишком сложно ?!

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

ответ

7

Я думаю, что есть две возможности: 1) либо вы пытаетесь использовать материал C++, который является waaay над вашими знаниями (и, следовательно, вы не знаете, что вы сделали неправильно и как интерпретировать сообщения об ошибках), 2) у вас слишком высокие ожидания.

Подсказка: многие последующие ошибки вызваны первой ошибкой. Когда я получаю огромный список ошибок, я обычно исправляю только первую ошибку и перекомпилирую. Вы были бы удивлены тому, сколько мусора (с точки зрения сообщений об ошибках) может возникнуть отсутствие разделителя или объявления типа.

Трудно синтаксически анализировать программу на С ++ перед компиляцией в основном по двум причинам: 1) грамматика C++ зависит от контекста, 2) шаблоны являются Turing-complete (думайте о них как о функциональном языке программирования со странным синтаксисом).

+0

Это довольно основной материал, который я играю с так что вероятно, вариант 2. На самом деле я боялся, что это может быть связано с природой языка, как вы предлагаете. – 2008-10-02 17:42:03

4

Мои предложения:

  • Если вы хотите больше функций, как вы получите в C#, получить VisualAssist X, а также узнать, как использовать его. Это не бесплатно, но это может сэкономить вам много времени.
  • Установите warning level high (изначально вы получите больше ошибок компиляции, но по мере их исправления вы почувствуете общие ошибки).
  • Установите предупреждение как ошибку, чтобы вы не привыкли игнорировать предупреждения.
  • Чтобы понять ошибки компиляции, используйте Google (не тратьте время на использование системы справки) для поиска по номерам предупреждающих ошибок (они выглядят следующим образом: C4127).
  • Избегайте шаблонов, пока вы не получите код без ошибок, используя приведенные выше методы. Если вы не знаете шаблоны, изучите! Получите несколько книг, сделайте несколько уроков и начните с малого. Ошибки компиляции шаблона, как известно, трудно понять. Visual C++ 2008 имеет гораздо лучшие сообщения об ошибках, чем предыдущие версии, но это все еще сложно.
  • Если вы начинаете делать шаблоны всерьез, получите широкоэкранный монитор (возможно, даже два), чтобы облегчить чтение подробных ошибок.
+0

Почему я проголосовал? – jwfearn 2008-10-02 19:01:38

3

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

По моему опыту, диагностика уже намного лучше, чем в VC6, но вам нужно будет «узнать» их истинный смысл как часть обучения IDE.

Статическая проверка C++ намного сложнее, чем C#, из-за режима сборки и невероятно сложного языка.PC-Lint (лучше всего вместе с Visual Lint для интеграции его в IDE) является каноническим статическим анализом. Не дешево, хотя ...

Стандарт C++ иногда читается как писание, но без обученного проповедника его интерпретировать. Один превосходный переводчик - Маршал Клайн с его C++ FAQ. Обратите внимание, что онлайн-FAQ, хотя и обширный, охватывает гораздо меньше, чем the book.

Что помогло мне понять сложные сообщения об ошибках пытается воспроизвести проблему в более тесной обстановке - но тогда не было интернета тогда ...