Jump to content

Ошибка компиляции

Ошибка компиляции или ошибка компиляции относится к состоянию, когда компилятору не удается скомпилировать часть компьютерной программы исходного кода либо из-за ошибок в коде, либо, что более необычно, из-за ошибок в самом компиляторе. Сообщение об ошибке компиляции часто помогает программистам отлаживать исходный код. Хотя определения компиляции и интерпретации могут быть расплывчатыми, обычно ошибки компиляции относятся только к статической, а не к динамической компиляции . Однако динамическая компиляция технически может иметь ошибки компиляции. [ нужна ссылка ] хотя многие программисты и источники могут идентифицировать их как ошибки времени выполнения . Большинство JIT-компиляторов , таких как движок Javascript V8 , неоднозначно называют ошибки компиляции синтаксическими ошибками, поскольку они проверяют их во время выполнения . [1] [2]

Распространенные ошибки компиляции C++

[ редактировать ]
  • Необъявленный идентификатор, например:

doy.cpp: In function `int main()': doy.cpp:25: `DayOfYear' undeclared (first use this function)[3]

Это означает, что переменную «DayOfYear» пытаются использовать до ее объявления.

  • Общая функция необъявлена, например:

xyz.cpp: In function `int main()': xyz.cpp:6: `cout' undeclared (first use this function)[3]

Это означает, что программист, скорее всего, забыл включить iostream .

  • Ошибка анализа, например:

somefile.cpp:24: parse error before `something'[4]

Это может означать, что в конце предыдущего оператора отсутствует точка с запятой.

Внутренние ошибки компилятора

[ редактировать ]

Внутренняя ошибка компилятора (обычно сокращенно ICE) — это ошибка, которая возникает не из-за ошибочного исходного кода, а из-за ошибки в самом компиляторе. Иногда их можно обойти, внеся небольшие, незначительные изменения в исходный код вокруг строки, указанной ошибкой (если такая строка вообще указана), [5] [ нужен лучший источник ] но иногда необходимо внести более крупные изменения, например рефакторинг кода, чтобы избежать определенных конструкций. Использование другого компилятора или другой версии компилятора может решить проблему и в некоторых случаях быть приемлемым решением. При возникновении внутренней ошибки компилятора многие компиляторы не выводят стандартную ошибку, а вместо этого выводят сокращенную версию с прикрепленными дополнительными файлами, которые предоставляются только для внутренних ошибок компилятора. Это сделано для того, чтобы гарантировать, что программа не выйдет из строя при регистрации ошибки, что сделает решение ошибки практически невозможным. Дополнительные файлы, прикрепленные к внутренним ошибкам компилятора, обычно имеют специальные форматы, в которых они сохраняются, например: .dump для Явы . Эти форматы, как правило, сложнее анализировать, чем обычные файлы, но они все равно могут содержать очень полезную информацию для устранения ошибки, вызывающей сбой. [6]

Пример внутренней ошибки компилятора:

somefile.c:1001: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugs.gentoo.org/> for instructions.
  1. ^ «Ошибки | Документация Node.js v7.9.0» . nodejs.org . Проверено 14 апреля 2017 г.
  2. ^ «Синтаксическая ошибка» . Сеть разработчиков Mozilla . Проверено 14 апреля 2017 г.
  3. ^ Jump up to: а б «Распространенные ошибки компилятора и компоновщика C++» . Архивировано из оригинала 16 февраля 2008 г. Проверено 12 февраля 2008 г.
  4. ^ «Компилятор, компоновщик и ошибки времени выполнения» .
  5. ^ Каннингем, Уорд (18 марта 2010 г.). «Ошибка компилятора» . ВикиВикиВеб . Проверено 14 апреля 2017 г.
  6. ^ జగదేశ్. «Анализ сбоя JVM» . Проверено 15 апреля 2017 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 56a15e0413ea7775f2b3af849ad777fc__1691670720
URL1:https://arc.ask3.ru/arc/aa/56/fc/56a15e0413ea7775f2b3af849ad777fc.html
Заголовок, (Title) документа по адресу, URL1:
Compilation error - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)