Bună ziua și bun venit în această lecție Vreau doar să trec peste niște compilatoare și avertismente comune.
Am vorbit despre unele probleme comune, dar uneori nici măcar nu știți că aveți acele
erori în programul dvs. atunci când compilatorul încearcă să vă spună că erorile și avertismentele compilatorului tind
să fie cu adevărat criptice pentru noii programatori.
Știți că s-ar putea să vă spună că vă lipsește un punct și virgulă, dar se spune că nu se poate spune nimic.
Și pentru cineva nou, ei nici măcar nu ar ști ce înseamnă asta.
Deci, este nevoie de multă practică în scrierea unei mulțimi de coduri și de a descifra unele dintre avertismentele
compilatorului de-a lungul timpului.
Dar aș vrea să vă dau un șef înainte de asta.
Unele dintre problemele obișnuite pe care le-ați văzut în cursul precedent.
Voi descrie de fapt câteva dintre avertismentele și erorile compilatorului și de ce, de fapt, spunem
că este foarte important să vă spunem să înțelegeți ce vă spune compilatorul.
Dacă compilatorii nu primesc erori, dar nu înțelegeți că aerul va dura mult mai mult
pentru a repara acest cod.
Dar, dacă vedeți eroarea și știți exact ce spune, puteți merge și reparați-o în cel mai scurt timp.
Îmi amintesc că aș fi în laborator când am început să programez și mi-ar lipsi un punct și virgulă.
Ceva foarte obișnuit și compilatorul mi-ar spune că îmi lipsește un punct și virgulă, dar voi ști că ar spune doar
sfârșitul inaccesibil al declarației și aș fi ca și cum ar însemna asta.
Ce face o declarație.
Aș fi foarte confuz.
De aceea am vrut să vă dau câteva sfaturi despre ceea ce compilatorul încearcă să vă spună.
Deci, este foarte greu să înțelegi ce comportă compilatorul să descifreze aceste mesaje
sunt uneori foarte confuze.
Deci, trebuie să înțelegeți erorile compilatorului pentru a le repara destul de simplu și compilatorul de a
face un compilator face jumătate de muncă pentru tine.
Verifică sintaxa care vă spune exact ce este în neregulă.
Deci, ar trebui să utilizați acest lucru în avantajul dvs., dar uneori este dificil să
înțelegeți exact ce spune el mai ales dacă sunteți nou și nu înțelegeți o terminologie pe care compilatorul
o ia în legătură cu modul de traducere a codului pe care programatorul nu l-a scris în cod.
Acest lucru este convenabil pentru program și compilator, astfel încât să poată fi scris mai succint în
doar programatori experți.
Profitați de această caracteristică.
Deci, ceea ce vă spun este că atunci când compilați ar trebui să utilizați întotdeauna opțiunea perete bord.
Aceasta va transforma totul.
Deci, uneori, caracteristicile mai avansate, de fapt, veți lua ceva lucruri, voi avea traducerea
puțin mai eficientă.
Dar când adăugați că provocați compilarea programului diferit și, ca rezultat, este posibil să aveți avertismente în codul
dvs. despre care nu știți.
Deci, motivul pentru care vă spun că întotdeauna doriți să compilați cu o anumită opțiune, care este
opțiunea perete dash.
Puteți să vă implicit implicit că este activat în blocuri de coduri și acest lucru vă va anunța despre toate cazurile în care
compilatorul face lucruri despre care nu știți.
De asemenea, va activa toate avertismentele care vă oferă o mulțime de informații, este foarte utilă opțiunea de compilator.
Odată ce ai această opțiune pe atunci poți încerca să te ajuți să înțelegi mai bine unii dintre
compilatorii care ți-au spus.
Deci, compilatorul vă va arăta două tipuri de erori.
Vor avea două tipuri de probleme.
Una este o eroare.
Acest lucru va împiedica, de fapt, crearea programului.
Chiar aveți o eroare de sintaxă și programul nu poate fi compilat.
Nu a fost recreat niciun executabil.
Și, de obicei, am menționat acest lucru mai devreme, dar de obicei, când vedeți erori în compilatorul pe care vreți să
vă concentrați întotdeauna pe prima acolo.
Aceasta este eroarea cea mai fiabilă deoarece unele dintre celelalte pot fi rezultatul acelei prime întâlniri acolo.
Deci, întotdeauna concentrați-vă asupra faptului că primul aer fixează mai întâi erorile Antropov și apoi compilați din nou și
vedeți dacă celelalte erori dispar.
Avertismentele de avertizare sunt mesaje pe care compilatorul le prezintă pentru situații speciale în care a fost detectat un
anumit tip de anomalie.
Sunt erori non-fatale.
Deci, executabilul va fi creat, dar este încă ceva pe care ar trebui să îl rezolvați.
Un avertisment este acolo pentru un motiv în care faci fie ceva incorect, fie ar putea cauza o
problemă în viitor.
Deci, doriți să remediați întotdeauna toate avertismentele dvs. și prin compilarea cu opțiunea peretelui bord, nu considerați
corect programul până când toate avertismentele au fost eliminate.
Compilația nu va eșua.
Acesta este motivul pentru care vă spun să utilizați această opțiune, precum și să vedeți tot ce se întâmplă de către compilator.
Deci, unele dintre cele mai comune mesaje compilatoare pe care le veți întâlni și acest lucru
va fi direct legat de unele dintre cele mai frecvente probleme pe care le-am menționat mai devreme dacă variabilele sunt nedeclarate.
Veți vedea această variabilă a mesajului în prima utilizare declarată în această funcție.
Aceasta este una dintre cele mai frecvente și, de obicei, mai ușor de detectat.
Acesta este și apoi va afișa simbolul înaintea acestui mesaj.
În principiu, va spune că încercați să utilizați această variabilă, dar nu ați spus-o niciodată.
Știm că atunci când declarați o variabilă specificați tipul de date.
Nu puteți începe să semnați date la variabile care nu există.
Declarația implicită de avertizare o funcție.
Acest lucru este legat de declarațiile de funcții.
Deci, atunci când încercați să apelați o funcție, dar funcția nu are niciun asociat de implementare cu dvs.,
nu ați inclus antetul sau declarați.
Deci nu știe unde este și nu știe cum este declarată funcția că nu cunoaște
argumentele pe care nu le cunoaște valoarea returnată nu are nicio informație despre funcția în sine.
Pentru a rezolva aceasta, declarați întotdeauna un prototip de funcție în partea de sus.
Un alt avertisment care va spune că controlul avertizării atinge sfârșitul funcției nevalide.
Acest lucru se va întâmpla când o funcție a fost definită ca returnând un rezultat.
Este nevalid, dar nu există nici o declarație de returnare inclusă în funcție.
Ați uitat să returnați datele.
Fie funcția este definită incorect în cazul în care trebuie să eliminați tipul de date înainte de declarația
funcției, fie ați uitat să adăugați acea declarație de returnare.
Unul din celălalt trebuie schimbat pentru a rezolva această dimineață.
Dar vedeți cum este un avertisment.
Puteți încă să compilați, dar omul care ar putea provoca cu adevărat probleme în programul dvs. pentru așteptarea unei funcții de
a reveni la ceva și nu.
Deci, doriți să remediați avertismentele dvs. variabilă neutilizată.
Un alt avertisment comun este imprimat de compilator când au fost declarate variabile, dar nu este niciodată folosit.
Nu ar trebui să declarați o variabilă dacă nu o utilizați, deci eliminați această declarație.
Am tendința de a obține aceste destul de puțin atunci când am atunci când fac unele dintre demo-urile mele pentru că am lăsa în
variabile pe care niciodată nu le folosesc sau când am fost demonstrat cum să declare o variabilă și apoi am compilat-o pentru a vă arăta că
am compilat voi obține o avertizând că nu a fost niciodată folosit.
Deci, e bine pentru că eu demonstrez ceva.
Dar vă eliminați variabilele dacă nu sunt folosite.
Numai declarați referință nedefinită.
Acest lucru se întâmplă în faza de legătură.
Așadar, amintiți-vă compilatorul sau faza de compilare pe care o va compila prima rulați preprocesorul pe care
îl va compila.
Acesta va genera fișierele obiect și apoi le va lua acele fișiere obiect și le
leagă împreună pentru a face un program complet în timpul fazei de legătură.
Trebuie să rezolvați orice dependență externă sau, în mod specific, orice funcție pe care o apelați.
Trebuie să fie implementate undeva, deci dacă nu are dosarul obiect, vă va da
această problemă pe care încercați să o invocați.
Dar nu avem codul pentru aceasta, astfel încât trebuie fie să te asiguri că link-ul către acest fișier de obicei legat se
va întâmpla pentru tine.
Dar în C și doar în gcc poți să faci opțiunea dash l pentru a adăuga deconectarea fișierelor, așa că dacă folosești o funcție
în fișierul de antet matematică, dar nu ești conectat la fișierul obiect matematică pe care o
vei primi eroare.
De asemenea, se întâmplă dacă aveți funcții definite de utilizator și nu ați inclus un fișier sursă C.
Deci, aveți mai multe fișiere sursă C unul dintre fișierele sursă C implementează această funcție alte
fișiere sursă C, inclusiv antetul și apelarea pe care nu ați compilat-o pe cealaltă seis pentru
fișierul sursă care are implementarea.
Veți vedea această eroare.
Deci, asigurați-vă că aduceți fișierul sursă.
Asigurați-vă că aduceți toate fișierele sursă standard de bibliotecă dacă aveți nevoie în mod explicit.
De obicei, nu faceți o altă eroare comună.
Aceasta este atunci când tipuri conflictuale pentru acest lucru este atunci când ați definit sau a declarat un prototip funcțional și atunci când ați
mers să-l implementați nu a fost același lucru cu modul în care ați declarat-o.
De exemplu, prototipul are un nume de rezultat al parantezelor
pentru parametri și apoi un semi-colon și atunci când definiți definirea implementării, aveți un antet funcțional
diferit.
Aveți un alt tip de retur unde aveți un număr diferit de parametri.
Și asta spune bine că ai această declarație cu o singură funcție și atunci când o duci să
o implementezi mai jos este complet diferită.
Deci există o nepotrivire și acest lucru vă va arăta efectiv pe linia în care apare conflictul
în definiția anterioară care a provocat contradicția.
Deci, și de implementare este, de obicei, în cazul în care vă arată linia, deoarece, de
obicei, vă declarați funcțiile la eroarea de execuție de top are erori de execuție sunt probleme în codul dvs. care se întâmplă atunci când executați
programul nu atunci când îl compilați.
Deci, acestea sunt de obicei accidente sau alte erori non-fatale în cazul în care sunteți cu adevărat în afara limite sau ceva
de genul asta.
Atunci când programul se execută, aveți un fel de eroare logică, astfel încât executarea programelor C se poate
termina brusc cu un accident când o eroare de execuție este ceva ce nu poate face față unei corupții de memorie.
Asa cum am mentionat in afara limitelor de erori, de obicei, a provocat caderea programelor.
De obicei, ceea ce veți vedea este defecțiunea de segmentare și defecțiunea de segmentare nu vă spune cu adevărat nimic atât de tipic
ceea ce vrei să faci la prima problemă de diagnostic este să te uiți la stiva de apeluri.
Așa cum am menționat sau rulați un program de depanare și a vedea ce linie de cod înainte de programul crashes
pas în linie cu linia pentru a vedea ce linie este cauza accidentului.
Puteți obține stiva de apel dacă există un fișier de bază pe care l-am menționat mai devreme și apoi din stiva de
apeluri.
Puteți vedea ce linie se prăbușește.
Sau, mai bine, rulați linia de depanare pas cu linie și atunci când executați o linie veți vedea accidentul de
program și puteți identifica în acest fel.
Deci, acestea sunt din nou câteva sfaturi despre erorile de compilator și avertismente și mesaje și cum să
le interpretați.
Există link-uri de fapt pe linie sau dacă faceți un google vă va spune fiecare eroare de compilator și de avertizare
care pot fi produse și va oferi de fapt o definiție a motivelor pentru care a fost produs.
De aceea a fost stiti.
Care a fost problema în esență.
Deoarece din nou acei compilatori pot fi foarte cripți și dacă știți chiar și cel în care se află controlul
nedorit.
Nu ai niciodată sub această descriere neapărat dacă nu ai avut experiență că asta înseamnă că
nu vei reveni niciodată din funcție.
Dar dacă faceți una dintre cele mai bune modalități de a găsi și rezolva problemele și programul dvs. atunci când aveți
erori de compilator și nu înțelegeți compilatorul.
Google și, în mod obișnuit, se va întâmpla ca și cum ați avea de gînd să supraviețuiască.
Acesta vă va spune că acesta este modul în care vă rezolvați.
Fac asta până în ziua de azi.
Am programat în C timp de 15 ani, dar sunt încă momente când mă întâlnesc cu lucruri și sunt ca
și cum ar însemna asta.
Și o va face.
O să-l spun.
De fapt, să iau compilatorul și să-l pun în citate și îmi va spune exact ce se întâmplă.
Stack Overflow este un site Web foarte bun și poate ajuta într-adevăr să economisească mult timp în procesul de
depanare.
Nu încercați doar să ghiciți când compilatorii c sunt avertismente pe care compilatorii încearcă să vi le spună ceva și
vor indica exact ce se întâmplă.
Dacă înțelegeți că veți reuși să rezolvați problema mult mai rapid.
Și dacă nu e ceva ce vă familiarizați cu obținerea unui stivuitor sau pentru a merge la un site care descrie
toate acestea și îl puteți descifra în felul acesta.
Sper că acest lucru a fost de ajutor.
Mulțumesc.