Я никогда не понимал, почему компиляторы C и C ++ пытаются восстановиться после ошибок и продолжают анализ. Почти всегда первая ошибка генерирует поток фиктивных ошибок, которые исчезнут, как только будет исправлена первая. После нескольких лет опыта я просто перестал искать любую ошибку, кроме первой в каждом файле. Я перезапускаю компилятор, а затем делаю это снова, пока не останется больше ошибок. Это обычная практика?
c++
c
error-messages
compiler
alexk7
источник
источник
Ответы:
Иногда ошибки не связаны. Я считаю , что проще взглянуть на список ошибок и устранить причину серии родственных ошибок, а затем зафиксировать следующий ип о связанной ошибке. Если проект большой и требует много времени для сборки, я считаю, что работать таким образом не так сложно, как исправить первую ошибку, перекомпилировать, повторить ...
источник
Это зависит от времени компиляции . Например, если я знаю, что я только что изменил главный заголовок, который вызовет перестройку всего проекта, я, безусловно, более подробно рассмотрю остальную часть стека ошибок и посмотрю, смогу ли я исправить некоторые из них. Это дает мне лучшее чувство, когда я встаю, чтобы приготовить кофе, пока работает компилятор.
источник
Да, я делаю то же самое, если только я не использую компилятор, чтобы помочь мне в рефакторинге, и в этом случае мне нравится полный список ошибок :)
источник
Если в номерах строк есть пробел, компилятор, вероятно , восстановился, а затем обнаружил другую ошибку.
Обычно только пытаются исправить одну ошибку в каждой связке.
источник
Лучшие компиляторы будут давать лучшие результаты и давать вам больше полезных ошибок после первой, часто посредством некоторого автоматического исправления ошибок, так что предположительно хороший код можно хотя бы проверить. Но затем я привык работать в Java, в Eclipse, где опечатки синтаксиса мгновенно обнаруживаются и легко исправляются, а другие ошибки компилятора имеют тенденцию быть более разнообразными и легче компилятору восстанавливаться. Я могу только предположить, что это похоже на работу в Microsoft IDE и других в C ++ или C #.
источник
Да, или, по крайней мере, я их снимаю. Довольно легко выяснить, связаны ли ошибки (обычно достаточно взглянуть на номер строки), и мне нравится исправлять их все за один проход, а затем перекомпилировать.
источник
Я делаю это (чтобы прочитать ошибки после первой), только если компиляция 1 cpp очень длинная. Или не доступно. Затем я предпочитаю убедиться, что я исправил все, что мог идентифицировать в ошибках компилятора, как не относящиеся к первой ошибке.
Когда ваш файл cpp может быть скомпилирован отдельно и выполняется менее чем за секунду (или у вас есть «intellisense», указывающие на ошибки до того, как компиляция даже началась), вам не нужно делать это большую часть времени.
В настоящее время я работаю над проектом, в котором я не могу скомпилировать только один cpp (и у меня нет руки в системе сборки, поэтому я не могу изменить это O__o), и для некоторых файлов cpp может потребоваться более десяти минут для компиляции ( даже после долгих усилий по его уменьшению мы сократили его до 50% от первоначального времени компиляции ...).
В этом типе очень длительной настройки компиляции вы, как правило, сначала много думаете, прежде чем нажимать «build» ... и даже потом много думаете, чтобы, возможно, найти ошибки перед компилятором, поскольку вы, безусловно, быстрее получаете их мысленно, чем это. ,
источник
Это довольно распространенно делать, как вы. Я обычно говорю стажерам или начинающим программистам, пораженным количеством ошибок, игнорировать почти все ошибки, кроме первой. Скорее всего, это настоящая ошибка, которую нужно исправить, а не вводящая в заблуждение фантомная ошибка, вызванная предыдущей. По этой причине некоторые (большинство?) Компиляторы имеют возможность остановить компиляцию после первой ошибки. Системы сборки обычно можно настроить так, чтобы они останавливались после первого файла, в котором также есть ошибки.
Однако есть причины продолжать компиляцию и после обнаружения ошибок. Например, вы можете подсчитать, сколько файлов имеют ошибки, или посмотреть, вызывает ли включенный заголовочный файл ошибки в нескольких файлах.
источник