خطای کامپایل
![]() | این مقاله دقیق، کامل و صحیح ترجمه نشده و نیازمند ترجمه به فارسی است. کل یا بخشی از این مقاله به زبانی بهجز زبان فارسی نوشته شدهاست. اگر مقصود ارائهٔ مقاله برای مخاطبان آن زبان است، باید در نسخهای از ویکیپدیا به همان زبان نوشته شود (فهرست ویکیپدیاها را ببینید). در غیر این صورت، خواهشمند است ترجمهٔ این مقاله را با توجه به متن اصلی و با رعایت سیاست ویرایش، دستور خط فارسی و برابر سازی به زبان فارسی بهبود دهید و سپس این الگو را از بالای صفحه بردارید. همچنین برای بحثهای مرتبط، مدخل این مقاله در فهرست صفحههای نیازمند ترجمه به فارسی را ببینید. اگر این مقاله به زبان فارسی بازنویسی نشود، تا دو هفتهٔ دیگر نامزد حذف میشود و/یا به نسخهٔ زبانی مرتبط ویکیپدیا منتقل خواهد شد. اگر شما اخیراً این مقاله را بهعنوان صفحهٔ نیازمند ترجمه برچسب زدهاید، لطفاً عبارت {{جا:هبک-ترجمه به فارسی|1=خطای کامپایل}} ~~~~ را نیز در صفحهٔ بحث نگارنده قرار دهید. |
![]() | برای تأییدپذیری کامل این مقاله به منابع بیشتری نیاز است. (دسامبر ۲۰۱۹) |
![]() | این مقاله نیازمند تمیزکاری است. لطفاً تا جای امکان آنرا از نظر املا، انشا، چیدمان و درستی بهتر کنید، سپس این برچسب را بردارید. محتویات این مقاله ممکن است غیر قابل اعتماد و نادرست یا جانبدارانه باشد یا قوانین حقوق پدیدآورندگان را نقض کرده باشد. |
![]() | این نوشتار یا بخش، مفهوم کامل و روشن را نمیرساند. لطفاً با ویرایش کردن یا افزودن جزئیات بیشتر به بهبود مقاله کمک کنید و سپس این برچسب را بردارید. |
خطای کامپایل به وضعیتی گفته میشود که کامپایلر نتواند یک قطعه از کد برنامه کامپیوتری را کامپایل کند، یا در زمانی که درخود کد خطا وجود داشته باشد. یا حتی ممکن است این خطا زمانی رخ دهد که خود کامپایلر شامل خطا باشد که این مورد کمتر است.
پیام خطای کامپایل اغلب به برنامه نویسان در دیباگ کردن کد منبع کمک میکند. اگر چه تعاریف کامپایل کردن و تفسیر میتواند مبهم باشد، اما در کل خطاهای کامپایل تنها به کامپایل کردن ایستا رجوع میکند و نه کامپایل پویا. با این حال مهم است بدانید که کامپایل کردن پویا نیز هنوز میتواند خطاهایی داشته باشد، اگرچه بسیاری از برنامه نویسان و منابع ممکن است آنها را به عنوان run-time-errors شناسایی کنند. اکثر کامپایلرهای just-in-time، مثل Java، از خطاهای کامپایل کردن به عنوان خطاهای نحوی یاد میکنند که آنها را در run-time چک میکنند.
مثالها
[ویرایش]خطاهای معمول کاپایل ++C
[ویرایش]شناسه اعلام نشده به عنوان مثال:
doy.cpp: In function `int main()': doy.cpp:25: `DayOfYear' undeclared (first use this function)
این به این معناست که متغیر "DayOfYear" سعی دارد قبیل از معرفی استفاده شود. یک تابع معمول اعلام نشده باشد به عنوان مثال:
xyz.cpp: In function `int main()': xyz.cpp:6: `cout' undeclared (first use this function)
این به این معناست که برنامهنویس به احتمال زیاد فراموش کرده iostream را بنویسد. خطای پارسر به عنوان مثال:
somefile.cpp:24: parse error before `something'
این میتواند به این معنا باشد که semi-colon در انتهای عبارت فراموش شدهاست.
خطاهای کامپایلر داخلی
[ویرایش]یک خطای کامپایلرداخلی (معمولاً به صورت ICE گفته میشود) خطایی است که با توجه به نادرست بودن کد مرجع رخ نمیدهد، بلکه به دلیل وجود خطا درون خود کامپایلر رخ میدهد. آنها گاهی اوقات میتوانند با ایجاد تغییرات کوچک و ناچیز درون کد مرجع در اطراف خطی که که خطا در آن رخ داده، اصلاح شوند (اگر همچین خطی نشان داده شود) اما گاهی اوقات تغییرات بزرگتری باید انجام شوند، مانند اصلاح مجدد کد، تا از برخی ساختارها جلوگیری شود. استفاده از کامپایلر متفاوت یا یک نسخهٔ متفاوت از کامپایلر، ممکن است مشکل را حل کند و در برخی موارد یک جواب قابل قبول دهد. زمانی که یه یک خطای کامپایلر داخلی برخورد میکند، بسیاری از کامپایلرها خطای استاندارد را تولید نمیکنند، اما در عوض یک نسخه کوتاه شده را با فایلهای اضافی ضمیمه، که فقط برای خطاهای کامپایلر داخلی ارایه میشوند، تولید میکنند. این برای این است که اطمینان حاصل کنیم برنامه در هنگام ورود خطا دچار خرابی نمیشود، که این باعث میشود حل خطای نزدیک غیرممکن شود. دیگر فایلهایی که برای خطاهای داخلی پیوست شدهاند معمولاً با فرمت خاص ذخیره میشوند، مانند dump برای جاوا. آنالیز این فرمتها معمولاً سختتر از فایلهای عادی است، اما همچنان میتوانند دارای اطلاعات بسیار کمک کننده ای برای حل باگهای حاصل از خرابی باشند.
مثالی از یک خطای کامپایلر داخلی:
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.
منابع
[ویرایش]https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError .1
https://nodejs.org/api/errors.html#errors_class_syntaxerror .2