ПредишенСледващото

Въпреки, че не искате да ги пренебрегват предупрежденията компилатора не са нещо достатъчно сериозно, за да не компилирате програмата. Обикновено предупреждение компилатор - това е знак, че нещо може да се обърка по време на изпълнение. Компилаторът не знае за това? Трябва да сте прави типичните грешки, които компилаторът не знае. Типичен пример - използването на оператора за присвояване = вместо на оператора на равенство == вътре израз. Вашият компилатор може също да ви предупреди за използването на променливи, които не се инициализират, както и други подобни грешки. Като правило, можете да настроите нивото на вашите предупреждения компилатора - мога да го настроя на най-високо ниво, така че да не се превърне в грешка в настоящата програма ( "по време на работа грешки") предупрежденията компилатора.

Въпреки това, предупрежденията на компилатора не трябва да спрат да си програма (ако не укажете компилаторът за лечение предупреждения като грешки), така че те вероятно не са толкова сериозни, колкото за грешка.

Грешки - това са условията, които пречат на завършването на съставяне на вашите файлове.

грешки компилатора са ограничени от кодови файлове индивидуален код, са резултат на "синтактична грешка". В действителност, това означава, че сте направили нещо, което компилаторът не може да разбере. Например, изразът за () синтаксис не е правилна, защото цикълът трябва винаги да има три части. Докато компилаторът очаква точка и запетая, това би могло да се очаква условен израз, така че грешката, ще получите съобщение, може да бъде нещо като:

ред 13, неочаквано скоба ")"

Имайте предвид, че грешките на компилатора винаги ще включват номера на реда, където е открита грешката.

Дори и да са преминали успешно процеса на компилация, може да срещнете проблеми с оформлението. грешки Линкерни, за разлика от компилатор грешки нямат нищо общо с грешен синтаксис. Вместо това, грешки свързващи - това е обикновено има проблем с търсенето на определението на функции, структури, класове, или глобални променливи, които са били декларирани, но не е дефинирано в изходния файл. Обикновено тези грешки ще бъдат:

Не можах да намеря определение за X

Като правило, на процеса на компилация започва с поредица от грешки и предупреждения за компилиране, и да ги поправим, ще се натъкнете на грешка връзка. На свой ред, за първи път ще се съберат грешки коригирани, а след грешка на връзка.

компилатора грешки - откъде да започнете?

Ако сте изправени пред списък на петдесет или шестдесет на грешки и предупреждения, че ще бъде трудно да се определи къде да започна. Най-доброто място, обаче, в началото на списъка. Всъщност, почти никога не започне да се поправят грешките от края на файла, преди да започне поради една проста причина: не знаете грешките те наистина са!

може да доведе до огромен брой грешки, включително и мнения:

излишно "инт" игнорира

Всичко това, защото на един герой! Най-добре е да се започне най-отгоре.

Анализ на съобщението за грешка

Повечето от съобщенията от компилаторът ще се състои от най-малко четири неща:

тип на съобщението - предупреждение или на грешка;

източник файл, в който е възникнала грешка;

кратко описание на това, което не работи правилно.

Заключение гр ++ да се програмира по-горе може да изглежда така (вашите резултати може да се различават, ако използвате различен компилатор):

foo.cc:7: грешка: запетая липсва след обявяване структура

foo.cc е името на файла. 7 - номер на ред, и е ясно, че това е грешка. Кратко съобщение тук е много полезна, защото тя показва какво точно не е наред. Имайте предвид обаче, че съобщението е смислена само в контекста на програмата. Той не ни казва какво структурата липсва запетая.

По-объркващо е друго съобщение за грешка от същите опити да състави:

излишно "инт" игнорира

Програмистът трябва да разбера защо това се е случило. Моля, имайте предвид, че тази грешка отново е бил причинен от проблем в началото на програмата, не е в съответствие 8 и по-рано, когато няма точка и запетая в структурата. За щастие, това е ясно, че дефиницията на функцията за Foo е в ред, той ни казва, че грешката трябва да бъде някъде другаде в програмата. В действителност, тя трябва да бъде в програмата преди - няма да получите съобщение за грешка, което показва синтактична грешка на линията, където всъщност е възникнала грешката.

Това е водещият принцип на изчисляване на грешката съставител: В случай на съмнение, потърсете в програмата преди. Тъй като синтактични грешки могат да имат сериозни последствия по-късно, че е възможно, че компилаторът посочи номера на реда, който всъщност не е синтактична грешка!

Би било много по-зле, ако компилаторът няма да ви кажа какво се е случило по-рано в програмата. Дори първият съставител грешката, която получавате, може да се дължи на няколко реда в определена предупреждението.

Обработка на неясни или странни съобщения

Има някои особено трудни видове получават грешки. Първо - това е една необявена променлива, която, както изглежда, на вас, които сте обяви. Често можете да посочите къде променливата е обявен! Проблемът е, че някои от променливите просто неправилно изписана. За съжаление, това е доста трудно да се види, защото обикновено четем това, което ние очакваме, а не това, което е в действителност. В допълнение, има и други причини, поради които това може да е проблем - например, проблеми с видимостта!

Втори неразбираемо съобщение:

Неочакван край на файла

В крайна сметка, ако съобщението не е ясно, подходът към проблема на мислене, компилаторът се опитва да приеме файла. Това може да е трудно, когато сте само началото, но ако се обърне внимание на съобщението и се опитват да разберат какво може да означава, вие бързо ще свикне с общите закони.

И накрая, ако всичко друго се провали, винаги можете да просто повторно напишете няколко реда код, за да се отстранят всички скрити синтактични грешки, които не могат да видят. Това може да бъде опасно, защото не можете да пренапише този раздел, но това може да помогне.

След като най-накрая фиксиран всички синтактични грешки, дрямка, снек няколко пъти и се подготвите психически за правилното съставяне на програмата, вие все още може да срещнете проблеми с оформлението. Те често са доста трудно да се коригира, тъй като те не са непременно резултат от това, което е написано в програмата си. Ще опиша накратко типичните видове свързващи грешки, които могат да се очакват и някои начини за решаването им.

Възможно е да имате проблеми с начина, по който сте настроили вашия компилатор. Например, дори и да включва необходимите заглавни файлове за всичките си функции, все още трябва да даде своя свръзка на правилния път до библиотеката, която е действителното изпълнение. В противен случай, можете да получите съобщение за грешка:

Понякога има малки грешки, когато докладите за свързващите на повече от една дефиниция за един клас, функция или променлива. Този проблем може да се случи по няколко причини: първо, обектът може да бъде две определения - например, две глобални променливи са обявени за външни променливи, които да бъдат достъпни извън файла източник. Това важи както за функциите и променливите, и това е, в действителност, това често се случва. От друга страна, понякога това е проблем с директивите на свръзката; няколко пъти съм виждал хора, включват няколко копия на един и същ обект файл в процеса на свързване. И бинго, имате няколко дефиниции. Типичен проява на този проблем е фактът, че редица функции, има няколко дефиниции.

Последно странен вид свързващи грешки - съобщение

неопределена препратка към основното

Напротив, това означава, че строителят се опитва да създаде изпълним файл, и не можеше да разбере къде основната функция (). Това може да се случи, ако сте забравили да включите основна функция, или ако се опитате да компилирате код, който никога не е бил един изпълним файл (например, ако се опита да състави библиотека).

Изборът на компилатор (IDE)

Dows: Код :: блокове с MinGW Код :: Blocks е на разположение на Linux

Microsoft Visual C ++

гр ++ е C ++ компилатор, която идва с повече дистрибуции * NIX

Apple XCode. XCode - IDE за програмиране в OS X или iPhone.

Qt SDK - междуплатформена разработка на софтуер пакет.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!