Hur Man Kör Programmet?
En kompilator är ett specialiserat program som översätter människoläsbar C-källkod till maskinkod som processorn kan utföra. Denna översättningsprocess gör att dina skrivna instruktioner blir en körbar fil som datorn förstår och kan köra.
För att omvandla vår kod till specifika kommandon för processorn behövs en kompilator. Kompilatorn bearbetar koden sekventiellt, uppifrån och ned. Själva kompileringen sker i flera steg:
-
Preprocessoroperation: alla
#include-direktiv behandlas, vilket integrerar externa filer, bibliotek och andra nödvändiga komponenter i ditt program; -
Syntaxfelanalys: kompilatorn kontrollerar syntaxfel och stoppar kompileringen om några fel upptäcks, samt markerar dessa för korrigering;
-
Kompilering till körbar fil: programmet översätts till en körbar fil (t.ex.
.exepå Windows), vilket gör att du kan köra det som vilket annat program som helst.
En körbar fil är helt enkelt en serie instruktioner (maskinkod) avsedd för processorn. Som jämförelse kan frasen "Hello, c<>definity" i maskinkod likna en sekvens.
program.exe
1201001000011001010110110001101100011011110010110000100000011000110011110000111 110011001000110010101100110011010010110111001101001011101000111100100100001
Ett avsiktligt fel har lagts till i koden nedan för att visa hur C-kompilatorn upptäcker och rapporterar problem.
Main.c
12345678#include <stdio.h> int main() { printf("some text") // Error line return 0; }
Kompilatorn förväntar sig ett semikolon (;) i slutet av den femte raden. Utan detta känner inte kompilatorn igen var satsen slutar och behandlar return 0; som en del av samma rad. Som ett resultat visas felet på nästa rad, även om det verkliga problemet är det saknade semikolonet efter printf.
Main.c
12345678#include <stdio.h> int main() { ;; ;;;;;; printf("C language\n");;; ;return 0; ;;; }
C-kompilatorn är ganska förlåtande med extra semikolon. Även om de kan se ovanliga ut, behandlas flera ; som tomma satser och påverkar inte programmets beteende. Koden kommer fortfarande att kompileras och köras utan problem, men det är god praxis att undvika onödiga semikolon för att hålla koden ren och lättläst.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
What are the main stages of the compilation process?
Can you explain what a preprocessor does in more detail?
Why does the compiler sometimes report errors on the wrong line?
Awesome!
Completion rate improved to 2.63
Hur Man Kör Programmet?
Svep för att visa menyn
En kompilator är ett specialiserat program som översätter människoläsbar C-källkod till maskinkod som processorn kan utföra. Denna översättningsprocess gör att dina skrivna instruktioner blir en körbar fil som datorn förstår och kan köra.
För att omvandla vår kod till specifika kommandon för processorn behövs en kompilator. Kompilatorn bearbetar koden sekventiellt, uppifrån och ned. Själva kompileringen sker i flera steg:
-
Preprocessoroperation: alla
#include-direktiv behandlas, vilket integrerar externa filer, bibliotek och andra nödvändiga komponenter i ditt program; -
Syntaxfelanalys: kompilatorn kontrollerar syntaxfel och stoppar kompileringen om några fel upptäcks, samt markerar dessa för korrigering;
-
Kompilering till körbar fil: programmet översätts till en körbar fil (t.ex.
.exepå Windows), vilket gör att du kan köra det som vilket annat program som helst.
En körbar fil är helt enkelt en serie instruktioner (maskinkod) avsedd för processorn. Som jämförelse kan frasen "Hello, c<>definity" i maskinkod likna en sekvens.
program.exe
1201001000011001010110110001101100011011110010110000100000011000110011110000111 110011001000110010101100110011010010110111001101001011101000111100100100001
Ett avsiktligt fel har lagts till i koden nedan för att visa hur C-kompilatorn upptäcker och rapporterar problem.
Main.c
12345678#include <stdio.h> int main() { printf("some text") // Error line return 0; }
Kompilatorn förväntar sig ett semikolon (;) i slutet av den femte raden. Utan detta känner inte kompilatorn igen var satsen slutar och behandlar return 0; som en del av samma rad. Som ett resultat visas felet på nästa rad, även om det verkliga problemet är det saknade semikolonet efter printf.
Main.c
12345678#include <stdio.h> int main() { ;; ;;;;;; printf("C language\n");;; ;return 0; ;;; }
C-kompilatorn är ganska förlåtande med extra semikolon. Även om de kan se ovanliga ut, behandlas flera ; som tomma satser och påverkar inte programmets beteende. Koden kommer fortfarande att kompileras och köras utan problem, men det är god praxis att undvika onödiga semikolon för att hålla koden ren och lättläst.
Tack för dina kommentarer!