Как настроить VS2008 для эффективной разработки C ++ - PullRequest
0 голосов
/ 02 октября 2008

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

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

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

Ответы [ 3 ]

7 голосов
/ 02 октября 2008

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

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

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

4 голосов
/ 02 октября 2008

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

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

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

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

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

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

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

...