Читаєте ви C або C ++ помилки компіляції після першої?


19

Я ніколи не розумів, чому компілятори C і C ++ намагаються відновитися після помилок і продовжують розбір. Майже завжди перша помилка породжує потік помилкових помилок, які зникнуть, як тільки виправлено першу. Після декількох років досвіду я просто перестав шукати будь-яку помилку, окрім першої у кожному файлі. Я повторно запускаю компілятор, а потім роблю це ще раз, поки не буде більше помилок. Це звичайна практика?


Напевно, я читаю лише перші, але я не працюю з тисячами мільйонів рішень вихідних файлів, так що це допомагає.
Кодер

Відповіді:


19

Іноді помилки не пов'язані між собою. Я вважаю , що простіше поглянути на список помилок і усунути причину серії родинних помилок, а потім зафіксувати наступний ип про пов'язаної помилку. Якщо проект великий і потребує певного часу, то я вважаю, що працювати таким чином менш неприємно, ніж виправити першу помилку, перекомпілювати, повторити ...


3
+1: Зауважте, якщо проект великий і потребує певного часу на його створення, розумно не змінювати занадто багато між компіляціями, щоб ви могли легко знайти будь-які проблеми, які ви ввели.
Стипендіати Дональ

Я погоджуюсь, що у випадку, якщо ваш час компіляції дуже довгий, можливо, буде корисно шукати інші непов’язані помилки, але я вважаю за краще виправити проблеми залежності, які спричиняють ці тривалі
нарощення

8

Це залежить від часу складання . Наприклад, якщо я знаю, що я щойно змінив головний заголовок, який спровокує відновлення всього проекту, я, безумовно, детальніше ознайомлюся з рештою стека помилок і побачу, чи зможу я виправити деякі з них. Це дає мені краще відчуття, коли я встаю, щоб зробити каву, поки працює компілятор.


4

Так, я роблю те саме, якщо я не використовую компілятор, щоб допомогти мені рефактор, і в цьому випадку мені подобається повний список помилок :)


У багатьох сучасних IDE є інструменти рефакторингу, доступні одним натисканням кнопки, тому помилка refactor за компілятором не потрібна, якщо у вас є доступ та можливості з такими інструментами. Якщо ви не віддасте перевагу ...
FrustratedWithFormsDesigner

1
Так, але в моїй основній роботі IDE VS немає жодної для C ++ :( Коли немає інструменту, я знайду спосіб!
Стівен Бейлі

1
Visual Assist X від Whole Tomato додає рефакторинг до VS для C ++.
каменеметал

4

Якщо в номерах рядків є пробіл, компілятор, ймовірно , відновився, а потім виявив ще одну помилку.

Зазвичай намагаються виправити лише одну помилку в кожній купі.


1

Кращі компілятори дадуть кращі результати та дадуть вам більше корисних помилок після першої, часто через якусь автоматичну корекцію помилок, так що, мабуть, хороший код можна хоча б перевірити. Але тоді я звик працювати в Java, в Eclipse, де помилки синтаксису миттєво виявляються та легко виправляються, а інші помилки компілятора, як правило, більш різноманітні та легші для відновлення компілятора. Я можу лише припустити, що це аналогічно під час роботи в IDE Microsoft та інших у C ++ або C #.


0

Так - або, принаймні, я їх скутую. Зрозуміти, чи пов’язані помилки досить легко (звичайно достатньо ознайомитись з номером рядка), і мені подобається виправити їх за один прохід, а потім перекомпілювати.


0

Я роблю це (щоб прочитати помилки минулого першого), лише якщо компіляція 1 cpp дуже довга. Або недоступні. Тоді я вважаю за краще переконатися, що я виправила все, що могло визначити в помилках компілятора, як не пов'язане з першою помилкою.

Коли ваш cpp-файл може бути скомпільований самостійно, і він займає менше секунди (або у вас є "intellisense" вказівки на помилки ще до того, як компіляція навіть почалася), вам не доведеться робити це більшу частину часу.

В даний час я працюю над проектом, в якому я не можу скласти один cpp самостійно (і я не маю рук в системі збирання, тому я не можу змінити це O__o), а для деяких файлів cpp може знадобитися більше десяти хвилин ( навіть після численних зусиль, щоб зменшити це, ми скорочуємо його лише на 50% від початкового часу компіляції ...).

У такому дуже довгому режимі компіляції ви схильні багато подумати, перш ніж натиснути на "збірку" ... і навіть багато подумати після цього, можливо, знайти помилки перед компілятором, оскільки ви, безумовно, швидше отримати їх подумки, ніж це .


-1

Це досить звичайно робити так, як ви. Зазвичай я кажу лікарям-початківцям або програмістам-початківцям, переповненим кількістю помилок, щоб ігнорувати майже всі помилки, крім першої. Це, швидше за все, справжня помилка, яку потрібно виправити, а не оманлива фантомна помилка, викликана попередньою. Деякі (більшість?) Компіляторів мають можливість припинити компіляцію після першої помилки з цієї причини. Системи побудови зазвичай можуть бути налаштовані для зупинки після першого файлу, який також має помилки.

Однак є причини продовжувати компілювати після виявлення помилок. Наприклад, ви можете порахувати, скільки файлів має помилки, або побачити, чи включений файл заголовка викликає помилки в більш ніж одному файлі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.