Как настроить VS2008 для эффективного развития C ++ -- c++ поле с участием visual-studio поле с участием static-analysis пол Связанный проблема

How to setup VS2008 for efficient C++ development


0
vote

проблема

русский

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

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

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

Английский оригинал

Normally I program in C# but have been forced to do some work in C++. It seems that the integration with Visual Studio (2008) is really poor compared to C# but I was wondering if there are any good tools, plugins or configurations that can improve the situation.

Another post pointed out the program Visual Assist X, which at least helps with some things such as refactoring (though it is a bit expensive for me). My major problem is, though, that the compile errors give little clue about what is wrong and I spend most of my time figuring out what I did wrong. It just feels like it is possibly to statically check for a lot more errors than VS does out of the box. And why doesn't it provide the blue underlines as with C#, that shouldn't be too hard?!

I realize that half the problem is just the fact that I am new to C++ but I really feel that it can be unreasonably hard to get a program to compile. Are there any tools of this sort out there or are my demands too high?

</div
        

Список ответов

7
 
vote

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

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

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

 

I think there are two possibilities: 1) either you're trying out C++ stuff that is waaay over your knowledge (and consequently, you don't know what you did wrong and how to interpret error messages), 2) you have too high expectations.

A hint: many subsequent errors are caused by the first error. When I get a huge list of errors, I usually correct just the first error and recompile. You'd be amazed how much garbage (in terms of error messages) a missing delimiter or type declaration could produce :)

It is difficult to syntactically analyze a C++ program before compilation mainly for two reasons: 1) the C++ grammar is context-dependent, 2) templates are Turing-complete (think of them as of a functional programming language with a weird syntax).

</div
 
 
 
 
4
 
vote

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

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

My suggestions:

  • If you want more features like you get in C#, get VisualAssist X, and learn how to use it. It isn't free but it can save you a lot of time.
  • Set your warning level high (this will initially generate more compile-errors but as you fix them, you'll get a feel for common mistakes).
  • Set warning as error so you don't get in the habit of ignoring warnings.
  • To understand compile errors, use Google (don't waste your time with the help system) to search on warning error numbers (they look like this: C4127).
  • Avoid templates until you get your code compiling without errors using the above methods. If you don't know templates well, study! Get some books, do some tutorials and start small. Template compile errors are notoriously hard to figure out. Visual C++ 2008 has much better error messages than previous versions but it's still hard.
  • If you start doing templates in earnest, get a wide-screen monitor (maybe even two) to make reading the verbose errors easier.
</div
 
 
3
 
vote
<Р> +1 для Visual Assist, может быть, не сейчас. - Но когда вы включаете хобби в профессию вы будете нуждаться в этом <Р> В моем опыте, diagnsotics уже намного лучше, чем в VC6, но вы должны «узнать» их истинный смысл как часть обучения IDE. <Р> Статическая проверка C ++ является гораздо более сложной, чем C #, из-за режим сборки, и невероятно более сложный язык. <Сильный> PC-Lint (лучше вместе с Визуальное Lint , чтобы интегрировать его в IDE) является каноническим анализ статической. Не дешевая, хотя ... <Р> Стандарт C ++ иногда читается как писание, но без обученного проповедника интерпретировать его. Один прекрасный переводчик Маршал Cline с его <сильный> C ++ FAQ , Обратите внимание, что онлайн-FAQ, в то время как обширна, охватывает гораздо меньше, чем книги . <Р> Что помогло мне понять сложные сообщения об ошибках пытается воспроизвести проблему в более тесной обстановке - но тогда, не было ни интернета тогда ...
 

+1 for Visual Assist, maybe not now - but when you turn the hobby into a profession you will need it.

In my experience, the diagnsotics are already much better than in VC6, but you will need to "learn" their true meaning as part of learning the IDE.

Static checking of C++ is much more complicated than C#, due to the build mode, and the incredibly more complex language. PC-Lint (best together with Visual Lint to integrate it into the IDE) is the canonical static analysis. Not cheap either, though...

The C++ standard sometimes reads like scripture, but without a trained preacher to interpret it. One excellent interpreter is Marshal Cline with his C++ FAQ. Note that the online FAQ, while extensive, covers much less than the book.

What helped me a lot understanding complex error messages is trying to reproduce the problem in a smaller environment - but then, there was no internet back then...

</div
 
 

Связанный проблема

1  Не можете получить программу Math C ++ для работы [дубликата]  ( Cant get math c program to work ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

0  Libusb_Bulk_Transfer добавляет CRC?  ( Does libusb bulk transfer add crc ) 
Я пишу программу пользовательского интерфейса для устройства USB в C ++, используя Visual Studio 2019. Я использую библиотеку Libusb. Я хочу сделать объемную ...

2  Новый DataType, который может иметь количество до 100 цифр  ( New datatype which can have numbers upto 100 digits ) 
Примечание. Это был вопрос интервью и может не иметь фактического случая использования в настоящее время Вопрос должен был разработать класс, который может ...

0  Как получить несколько наборов результатов с Poco :: Data?  ( How to fetch multiple result sets with pocodata ) 
Я прочитал Poco :: Руководство пользователя данных и упоминается, что Библиотека имеет поддержку нескольких наборов результатов. Существует пример для этой ...

1  STD :: CIN непосредственно к функции  ( Stdcin directly to a function ) 
Недавно я наткнулся на следующую часть кода. Я не знаю, имеет ли это какой-либо смысл, я просто пытаюсь его понять: <код> object Gender extends Enumeration ...

1  C ++ - утечка памяти, вызванная использованием размещения New Over * этот указатель?  ( C memory leak caused by using placement new over this pointer ) 
Как известно, размещение New просто строит объект без выделения любой памяти. Также все члены в классе <Код> 5.5.10 являются объектами вместо указателей, хот...

0  Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)"  ( Error argument of type void opca hello does not match void void ) 
Я написал очень простой код для резьбы. Поскольку я очень новый для этого, я понятия не имею об ошибке. <код> class opca_hello { public: void hello(); } v...

0  Проблема дизайна - создание шрифта Global (C ++, Marmalade)  ( Design issue making a font global c marmalade ) 
У меня есть проект Marmalade C ++, где встроенный в шрифте не масштабируется на экран. Чтобы справиться с этим вопросом, я делаю пользовательский шрифт, котор...

4  Преобразовать фильм в Openni * .oni видео  ( Convert movie to openni oni video ) 
the библиотека Kinect Openni использует пользовательский формат видеофайла для хранения видеороликов, которые содержат информацию RGB + D. Эти видео имеют р...

5  Что такое "для (x: y)"?  ( What is for x y ) 
Итак, я оглянулся на межпубки о нитках, и я пришел в блог / учебную вещь о нитках, но то, что меня смущено, была эта линия, которую он использовал <код> for...

0  Использование аргументов Makefile без Foo =  ( Using makefile arguments without foo ) 
У меня есть makefile, который я использую для компиляции одного файла. Когда мне нужно пройти аргумент, я использую цель = TargetFile. Сценарий принимает ар...

1  Почему 64-битное целое расширение C ++ называется «долгим долгом»?  ( Why is the 64bit integer extension of c called long long ) 
В отличие от других типов: «int», "логический", "двойной" и т. Д. И даже таможенные классы, есть только одно слово. Однако только одно слово для их типа тольк...

-1  Неожиданный идентификатор ошибки - не уверен, почему (C ++)  ( Unexpected error id not sure why c ) 
IM Реализация программы C ++, по соображениям проекта оно должно быть включено в один файл, поэтому я не могу поставить то, что вы обычно в отдельном файле за...

501  Как использовать постоянную PI в C ++  ( How to use the pi constant in c ) 
Я хочу использовать постоянные и тригонометрические функции PI в некоторой программе C ++. Я получаю тригонометрические функции с помощью <код> include <math....

57  Как сделать макрос C ++ вести себя как функция?  ( How do i make a c macro behave like a function ) 
Допустим, по какой-то причине вам нужно написать макрос: <код> MACRO(X,Y) . (давайте предположим, что есть веская причина, по которой вы не можете использова...




© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.