Cele mai frecvente sunt nbsp; Erori emise - nbsp; compilatorul gcc este mic

aceasta este traducerea paginii "CSM217: C pentru oamenii de știință de la calculatoare".
(pentru a nu pierde pe disc)







Cele mai frecvente erori raportate de compilatorul gcc

Următoarea este o listă de erori comune de compilare și avertismente ale compilatorului gcc, precum și o explicație a motivelor apariției lor. Rețineți că acest material este aplicabil sistemelor de operare similare UNIX.

Traducerea mesajelor de sistem este dată în paranteze pătrate.

Lista erorilor

Descrierea erorilor / avertismentelor comune ale compilatorului

"variabilă" nedeclarată (prima utilizare în această funcție) [variabila nu este definită (prima utilizare în această funcție)]

secvență de evadare necunoscută

Nu există un astfel de fișier sau director [Nu există un astfel de fișier sau director]

ld: eroare elf: fișier prog: [ld: eroare format elf: prog: fișier]

analiza erorii înainte de "șir" [eroare de parse înainte de "șir"]

Nelimitat simbol [Simbol nedefinit]

caractere constante prea lung [caracter prea lung constant]

trecând arg n de "funcție" face
tipul de date de la un alt tip de date fără o distribuție [argumentul dat n al funcției "funcția" creează
tipul de date dintr-un alt tip de date fără a fi distribuit]

șir de caractere neterminate sau caracter constant [o șir de caractere sau caractere incomplete]

analizați eroarea la sfârșitul intrării

Descrierea erorilor / avertismentelor comune ale compilatorului

În C, erorile de compilare sunt de obicei critice, adică compilatorul C nu vă poate compila codul. În același timp, un avertisment este doar un avertisment: compilatorul a identificat o problemă potențială, dar totuși a reușit să creeze codul obiect. Avertismentele nu trebuie ignorate, de obicei înseamnă că ceva este în neregulă cu programul dvs. și, cel mai probabil, se va comporta nu la fel cum vă așteptați.

Înainte de mesajele de eroare și avertismentele, sunt afișate numele și funcțiile de fișiere în care a apărut eroarea. De exemplu,

prog.c: În funcția "principală":


[prog.c: În funcția 'main':]

înseamnă că a apărut eroarea la compilarea programului prog.c sau, mai precis, în funcția principală. Următoarele linii afișează erori / avertismente pentru datele despre fișiere și funcții. Dacă există mai multe funcții în cod și / sau mai multe fișiere, atunci fiecare fișier / funcție care conține erori va fi afișat separat.

Mesajele de eroare / liniile de avertizare care urmează după numele fișierului / funcției conțin:



  • numele fișierului / funcției care conține eroarea;
  • numărul de linie din fișierul sursă unde sa produs eroarea;
  • șirul de avertizare. dacă mesajul este un avertisment (la eroare această linie este goală);
  • descrierea erorii întâlnite.


prog.c: 3: avertisment: secventa de escape necunoscuta '\ z'

[prog.c: 3: avertisment: secvență de control necunoscută \ z ']

înseamnă că există o problemă în linia 3 a fișierului prog.c. Acest mesaj este doar un avertisment: nu există nici o secvență de evacuare '\ z'. Programul va fi compilat (dacă nu există alte erori), deoarece acesta este doar un avertisment. Cu toate acestea, cel mai probabil, programul se va comporta nu la fel cum vă așteptați.







"variabilă" nedeclarată (prima utilizare în această funcție) [variabila nu este definită (prima utilizare în această funcție)]

C este un limbaj scris, adică trebuie să declarați variabilele înainte de a le utiliza. C este, de asemenea, un limbaj sensibil la caz, adică var și Var sunt variabile diferite. Ați uitat să declarați o variabilă sau ați făcut o greșeală în a scrie numele.


Acest mesaj de eroare - compilatorul nu a putut compila codul. De obicei, acest mesaj este însoțit de text (fiecare identificator nedeclarat este raportat o singură dată pentru fiecare funcție în care apare.) [(Pentru fiecare identificator nedeclarat este afișat un singur mesaj de funcționare.]].
Aceeași variabilă nedeclarată poate apărea de mai multe ori într-o funcție, dar compilatorul raportează doar primul caz.

secvență de evacuare necunoscută \ z '[secvență necunoscută de control]

O secvență de control este un caracter precedat de o coloană "\". Prezența lui '\' schimbă funcția caracterului următor. De exemplu, 'n' este un caracter n, dar '\ n' este o linie nouă. Pentru unele caractere, de exemplu, z, nu există secvențe de control. Programul va fi compilat (dacă nu există alte erori), deoarece acesta este doar un avertisment. Cu toate acestea, cel mai probabil, programul se va comporta nu la fel cum vă așteptați.

Nu există un astfel de fișier sau director [Nu există un astfel de fișier sau director]

Ați instruit să compilați un fișier care nu există. Este de așteptat ca fișierele sursă ale programului C să aibă extensia .c. Dacă codul sursă este în fișierul proc.c, utilizați comanda gcc prog.c. Încercarea de a executa gcc prog va duce la această eroare. Această eroare este de obicei însoțită de un mesaj Fără fișiere de intrare.

ld: eroare elf: fișier prog: [ld: eroare format elf: prog: fișier]

De obicei, veți vedea și următorul mesaj.

tip necunoscut, incapabil să proceseze bibliotecile elf (3E)

ld: fatal: erori de procesare a fișierelor. Nici o ieșire scrisă la a.out

collect2: ld a returnat 1 stare de ieșire


[tip necunoscut, nu poate fi procesat folosind bibliotecile elf (3E)

ld: critical: Erorile de procesare a fișierelor. Nimic scris la a.out

collect2: ld a returnat starea de ieșire 1]

Greseala neplăcută; din fericire, este ușor să reparăm! Codul pentru programul tău C se află în fișierul prog, dar din moment ce nu ai folosit extensia .c pentru acest fișier, gcc nu înțelege ce tip de cod este conținut în fișierul specificat. Pentru a remedia eroarea, pur și simplu redenumiți programul prog.

analiza erorii înainte de "șir" [eroare de parse înainte de "șir"]

Nelimitat simbol [Simbol nedefinit]

Gcc a întâlnit ceva similar cu un apel de funcție, dar nu există nicio funcție cu acest nume. Numele funcției "lipsă" este primul cuvânt din a treia linie a mesajului de eroare (principal).

În toate programele C, ar trebui să existe o funcție principală, deoarece începe executarea programului.

caractere constante prea lung [caracter prea lung constant]

În C, șirurile trebuie să fie închise în ghilimele duble (""). Dacă folosiți citate simple (''), este de așteptat ca aceștia să aibă doar un caracter (sau secvența de control).

avertisment: trece arg n de "funcție" face
pointer de la intreg fără o distribuție [argumentul trecut n al funcției "funcția" creează un pointer din întreg fără a fi turnat]


Ai sunat la funcție. Este de așteptat ca argumentul n să fie un pointer, dar să transmiteți o valoare intregă (int) funcției. Tastarea de tip este utilizată pentru a schimba tipul de valoare, dar nu o faceți. C este o limbă tipărită, adică este necesar să se declare tipurile de variabile și tipurile de date transmise funcțiilor, înainte de a le utiliza. Acest avertisment este afișat dacă există o nepotrivire de tip între datele transmise funcției și datele așteptate de funcție (tipul de
parametrii sunt specificați în funcția prototip). În ciuda faptului că gcc va crea cod obiect, acest avertisment ar trebui notat, deoarece indică de obicei o eroare logică.

șir de caractere neterminate sau caracter constant [o șir de caractere sau caractere incomplete]

Numărul de cotații de deschidere și de închidere (simplu sau dublu) nu se potrivește.

analizați eroarea la sfârșitul intrării

Este posibil să fi pierdut brațul de închidere (>) undeva în cod. C nu poate spune exact unde, norocul în căutarea!







Articole similare

Trimiteți-le prietenilor: