hello kann nach der Kompilierung wie jedes andere Unix Kommando ausführt werden
|
|
- Greta Koch
- vor 5 Jahren
- Abrufe
Transkript
1
2 HelloWorldRevisited Datei hello.c Kommandozeile $ gcc -o hello hello.c $./hello Hello, World! $ #include <stdio.h> int main(){ } printf("hello, World!\n"); return 0; hellokannnachderkompilierungwiejedesandere Unix Kommandoausführtwerden 2
3 DerC Compiler 3
4 KompilierungalsmehrstufigerProzess Quellcode-Dateien hello.c Bibliotheken Header-Dateien stdio.h Präprozessor /usr/lib/libc.a Compiler Linker Objektdateien Modifizierter Quellcode hello.o ausführbaredatei hello 4
5 HelloWorldbestehendausmehrerenDateien Dateimain.cDateienhello.cundbye.c externhello(char*who); externbye(char*who); intmain(){ #include<stdio.h> hello(char*who){ printf("hello,%s!\n",who); } hello("world"); bye("world"); return0; } #include<stdio.h> bye(char*who){ printf("bye,%s!\n",who); } 5
6 SeparateKompilierung $ ls bye.c hello.c main.c $ gcc -c hello.c $ gcc -c main.c $ gcc -c bye.c $ ls bye.c hello.c main.c bye.o hello.o main.o $ 6
7 Linken $ gcc -o hello main.o hello.o bye.o $./hello Hello, World! Bye, World! $ 7
8 TypenvonFehlern Präprozessor Fehler,z.B falschgeschriebenepräprozessoranweisung undefiniertesymbolischekonstante Compiler Fehler,z.B Syntaxfehler Typfehler Linker Fehler,z.B undefinedreferenceto`foo' collect2:ldreturned1exitstatus Laufzeitfehler,z.B. dividebyzero Speicherzugriffsfehler:segmentationfault/buserror 8
9 DerPräprozessor 9
10 Präprozessoranweisungen am Zeichen # zu Beginn der Anweisung zu erkennen der Präprozessor bearbeitet nur Zeilen beginnend mit # Einfügen von Dateien: Ersetzen von Text (Makros): #include #define Bedingte Kompilierung: #if, #ifdef, #ifndef, #else, #elif, #endif 10
11 ParameterloseMakros Syntax:#definename[replacement] Anwendung:DefinitionvonsymbolischenKonstanten #definepi PräprozessorersetztvorderKompilierungjedes VorkommenvonPImit ErhöhtdieLesbarkeitundWartbarkeitdesProgramms 11
12 MakrosmitParametern Syntax:#definename(dummy1[,dummy2][,...])tokenstring ExpressionMakros übersetztineinenausdruck ähnlicheinerfunktion,dieeinenwertzurückgibt #defineradtodeg(x)((x)* ) StatementMakros übersetztineinodermehrerevollecstatements ähnlicheinerfunktion,dievoidzurückgibt #defineswap(x,y)\ do{tmp=x;x=y;y=tmp;}while(0) 12
13 WarumKlammern? #defineradtodeg(x)(x* ) RADTODEG(a+b) (a+b* ) #defineradtodeg(x)(x)* /RADTODEG(a) 1/(a)*
14 WarumkeinSemikolonamEndeeinesMakros? SemikolonbeimAufrufsiehtnatürlicheraus >ProgrammiererkönntenSemikolonsdoppeltsetzen unddamitdencontrolfloweinesprogrammsändern #defineradtodeg(x)((x)* ); #definedegtorad(x)((x)* ); if(to_degree) y=radtodeg(x); else y=degtorad(x); if(to_degree) y=((x)* );; else y=((x)* );; 14
15 WarumkeinSemikolonamEndeeinesMakros? zusätzlichesproblembeiexpressionmakros #defineradtodeg(x)((x)* ); if(radtodeg(x)>180) if(((x)* );>180) y=radtodeg(x)+180; y=((x)* );+180; 15
16 MehrzeiligeStatementMakros /* *Swapstwovalues. *Requirestmpvariabletobedefined. */ #defineswap(x,y)\ do{\ tmp=x;\ x=y;\ y=tmp;\ }\ while(0) 16
17 AlternativesSWAP /* *Swapstwovalues. *Requirestypepassedasparameter */ #defineswap(x,y,type)\ do{\ typetmp=x;\ x=y;\ y=tmp;\ }\ while(0) 17
18 EleganteLösung(nurgcc) /* *Swapstwovalues. *Requiresgcctypeofextension */ #defineswap(x,y)\ do{\ typeof(x)tmp=x;\ x=y;\ y=tmp;\ }\ while(0) 18
19 Warumdo{...}while(0)? #defineswap(x,y)\ tmp=x;\ x=y;\ y=tmp intx,y,tmp; if(x>y) SWAP(x,y); intx,y,tmp; if(x>y) tmp=x; x=y; y=tmp; 19
20 Warumdo{...}while(0)? #defineswap(x,y){\ tmp=x;\ x=y;\ y=tmp;\ } intx,y,tmp; if(x>y){ tmp=x; x=y; y=tmp; }; else... intx,y,tmp; if(x>y) SWAP(x,y); else... 20
21 Zusammenfassung WenneinDummy ArgumentfüreinenWert(odereinen PointerzueinemWert)steht,alleVorkommenim Tokenstringklammern DengesamtenTokenstringvonExpressionMakros klammern KeineSemikolonsamEndeeinesMakros MehrzeiligeStatementMakrosmit\trennen TokenstringvonmehrzeiligenStatementMakrosmit do{..}while(0)umschließen 21
22 WeitereProbleme dassymbolerscheintbeimtestendesprogramms mittelsdebuggernichtmehr Makroskönnensichungewolltüberschreiben MakroswerdenerstexpandiertunddahervomCompiler überprüft,wennsietatsächlichaufgerufenwerden MehrfacheSeiteneffekte #definemin(a,b)((a)>(b)?(b):(a)) x=y=1; MIN(++x,++y); 22
23 MakroStyleguide NamenskonventionGroßbuchstaben Wennmöglich,FunktionenstattMakrosverwenden Alternativen: ParameterloseMakrosconst(C90) MakrosmitParameterninline(C99) VorsichtbeiMakroszurOptimierung Makroskurzhalten keinehacks! 23
24 BedingteKompilierung 24
25 BedingteKompilierung #ifdef_win32 /*dowindowsspecificstuffhere*/ #endif #ifdef APPLE /*domacspecificstuffhere*/ #endif #ifdef linux /*dolinuxspecificstuffhere*/ #endif 25
26 Beispiel:Debugging #definepi #defineradtodeg(x)((x)* ) intdebug=1; intmain(){... if(debug) printf("pi%f",radtodeg(pi));... return0; } 26
27 Ein einfaches Debugging Makro Datei debug.h #include<stdio.h> #definedebug #ifdefdebug #definelogprintf #else #definelogif(0)printf #endif 27
28 Unser neues Hello World Dateihello.c #include debug.h intmain(){ LOG("HelloWorld!\n"); return0; } 28
29 Output des Präprozessors (gcc) $gcc Ehello.c...748weitereZeilen #11"hello.c" intmain(){ printf("hello,world!\n"); return0; } $ 29
30 define per Kommandozeile (gcc) gcc[ Dmacro[=defn]...]infile %gcc DDEBUGhello.c %gcc DDEBUG DVERBOSE=1hello.c 30
31 Hinzufügen von Debug Levels Dateidebug.h #include<stdio.h> #defineverbose0 #ifdefdebug #definelogprintf #else #definelogif(0)printf #endif 31
32 Unser neues Hello World mit Debug Levels Dateihello.c #include debug.h intmain(){ if(verbose==1)log("helloworld!\n"); return0; } 32
33 Debug Levels mit bedingter Kompilierung Dateihello.c #include debug.h intmain(){ #ifverbose==1 LOG("HelloWorld!\n"); #endif return0; } 33
34 Header-Dateien 34
35 Header Dateien 35
36 Header-Dateien HeaderDateienerkenntmananderEndung".h SiesindTeilvonSchnittstellenzwischenSystemen Sieenthalten: Funktions Deklarationen globalevariablen symbolischekonstanten Makros Datentypen(z.B.Strukturen) 36
37 Inkludieren von Header-Dateien #include <name> sucht zuerst im Verzeichnis der Systemdateien erst dann im Verzeichnis der Quelldatei wird normalerweise verwendet, um Headerdateien, die vom System geliefert werden, einzubinden (z.b. #include <stdio.h>) #include "name" sucht zuerst im Verzeichnis der Quelldatei erst dann im Verzeichnis der Systemdateien wird normalerweise verwendet, um selbst geschriebene Header-Dateien einzubinden (z.b. #include "debug.h") 37
38 I Compileroption(gcc) ErweitertbeimÜbersetzeneinesProgrammesdieListe derverzeichnisseindenennacheinerdateigesuchtwird. gcc Iincludehelloworld.c suchtnachstdio.hzuerstalsinclude/stdio.h,underst dannals/usr/include/stdio.h. 38
39 int _flags2; Präprozessor OutputvonHelloWorld off_t _old_offset; unsigned short _cur_column; #304"/usr/include/stdio.h"34 signed char _vtable_offset; char _shortbuf[1]; externintprintf( constchar* restrict format,...); _IO_lock_t *_lock; # 319 "/usr/include/libio.h" 3 4 off64_t _offset; # 328 "/usr/include/libio.h" 3 4 void * pad1; void * pad2; void * pad3; void * pad4; size_t pad5; int _mode; char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; }; typedef struct _IO_FILE _IO_FILE; 39
40 Problem:Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h... 40
41 Problem:Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h... 41
42 Problem: Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h #include bar.h... 42
43 Problem:Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h #include bar.h... 43
44 VermeidungvonMehrfachinklusion Datei foo.h #ifndef FOO_H #define FOO_H extern int foo(int x, int y); #endif 44
45 Der Präprozessor 45
46 Danke! 46
47 1
48 HelloWorldRevisited Datei hello.c Kommandozeile $ gcc -o hello hello.c $./hello Hello, World! $ #include <stdio.h> int main(){ } printf("hello, World!\n"); return 0; hellokannnachderkompilierungwiejedesandere Unix Kommandoausführtwerden 2
49 DerC Compiler 3
50 KompilierungalsmehrstufigerProzess Quellcode-Dateien hello.c Bibliotheken Header-Dateien stdio.h Präprozessor /usr/lib/libc.a Compiler Linker Objektdateien Modifizierter Quellcode hello.o ausführbaredatei hello 4 Der C-Präprozessor ist zuständig für den ersten Arbeitsgang beim Übersetzen eines Quellprogramms. Er führt vor dem eigentlichen Übersetzen des Programms in Maschinencode eine Art Vorverarbeitung aus. Der eigentliche'' Compiler erzeugt aus dem Quelltext zusammen mit den durch #include-anweisungen dazugekommenen Header-Files den Objektcode. Dabei leistet er die Hauptarbeit des Übersetzens: * Er überprüft die syntaktische und semantische Korrektheit des Programms, * wandelt die Konstrukte der Sprache C in Instruktionen der Maschinensprache des Systems um, * optimiert die entstehende Instruktionsfolge. (Dieser letzte Schritt wird oft wieder von besonderen Programmen, den optimizern, erledigt.) Meistens wird dabei zunächst Assembler Code erzeugt Assemblerdateien haben die Endung.s Daraus macht der Assembler Instruktionen der Maschinensprache des Systems, also Binärcode. Das Ergebnis dieser Stufe ist das Object-File, traditionell mit der File-Endung.o, also zum Beispiel hello.o. hello.o enthält eine Referenz zu der funktion printf. Da wir dieses Symbol nicht definiert haben, ist es eine externe Referenz. Der Maschinencode enthält eine Instruktion, um printf aufzurufen, aber im Objektcode wissen wir noch nicht die tatsächliche Adresse, die notwendig ist, um diese Funktion auszuführen. Der Linker bekommt als Input Objektdateien und Libraries. Libraries sind Kollektionen von Objektdateien. Er löst externe Referenzen auf, und trägt die endgültigen Adressen für Funktionen und Variablen ein. Obwohl man Bibliotheken wie Object-Files verwenden kann, behandelt der Linker sie anders: * Objektdateien werden vollständig mit zum Programm dazugebunden. * Bibliotheken werden vom Linker nur nach den Symbolen durchsucht, die im Moment noch nicht definiert sind. (Symbole heißt in unserem Fall,,globale Funktions- und Variablennamen.'') Nur die Object-Files aus dem Archiv, die solche undefinierten Symbole definieren, werden zum Programm dazugebunden. Wenn alle externen Referenzen vorhanden sind, hat man am Ende eine ausführbare Datei.
51 HelloWorldbestehendausmehrerenDateien Dateimain.cDateienhello.cundbye.c externhello(char*who); externbye(char*who); intmain(){ #include<stdio.h> hello(char*who){ printf("hello,%s!\n",who); } hello("world"); bye("world"); return0; } #include<stdio.h> bye(char*who){ printf("bye,%s!\n",who); } 5 Grosse Programme sollte man schon der Übersichtlichkeit halber in mehrere Source-Files aufteilen, auch weil dann beim Entwicklen der Software nicht nach jeder kleinen Änderung alles neu übersetzt werden muß. Linken geht schnell; das Übersetzen dauert lange.
52 SeparateKompilierung $ ls bye.c hello.c main.c $ gcc -c hello.c $ gcc -c main.c $ gcc -c bye.c $ ls bye.c hello.c main.c bye.o hello.o main.o $ 6 Wenn man nicht (zum Beispiel mit -c) das Gegenteil festlegt, macht ein C-Compiler immer bis zum ausführbaren Programm weiter. Die.o Dateien werden dann nach dem Kompilierungsvorgang gelöscht Wenn wir versuchen, die files einzeln ohne -c zu kompilieren, erhalten wir Linker-Fehler undefined reference to `bye' undefined reference to `hello' bye und hello wurden nirgends definiert. undefined reference to `main' In c muss jedes Programm genau eine main-funktion haben, denn das ist der Punkt, an dem die Ausführung des Programms beginnt.
53 Linken $ gcc -o hello main.o hello.o bye.o $./hello Hello, World! Bye, World! $ 7 Um nur die Linker-Stufe des Compilers gcc oder cc zu benutzen, braucht man keine besonderen Optionen anzugeben. Daß eine Datei Objektcode enthält, sieht der Compiler an der Endung:.o für Objektcode. Die -o-option, die einem in diesem Zusammenhang einfallen könnte, steht für output, nicht für object - das Wort nach ihr sagt, wie das ausführbare Programm heißen soll. Wenn man -o nicht angibt, ist der default a.out; deshalb heißt das File-Format für ausführbare Programme unter Unix auch manchmal,,a.outformat.``
54 TypenvonFehlern Präprozessor Fehler,z.B falschgeschriebenepräprozessoranweisung undefiniertesymbolischekonstante Compiler Fehler,z.B Syntaxfehler Typfehler Linker Fehler,z.B undefinedreferenceto`foo' collect2:ldreturned1exitstatus Laufzeitfehler,z.B. dividebyzero Speicherzugriffsfehler:segmentationfault/buserror 8
55 DerPräprozessor 9 Die Tücken des Präprozessors liegen darin, dass er ein reines Textersetzungsprogramm ist. Das hat zur Folge, dass man mysteriöse Fehlermeldungen bekommt, die sich auf den modifizierten Text beziehen und somit auf Code, den man so nie geschrieben hat.
56 Präprozessoranweisungen am Zeichen # zu Beginn der Anweisung zu erkennen der Präprozessor bearbeitet nur Zeilen beginnend mit # Einfügen von Dateien: Ersetzen von Text (Makros): #include #define Bedingte Kompilierung: #if, #ifdef, #ifndef, #else, #elif, #endif 10
57 ParameterloseMakros Syntax:#definename[replacement] Anwendung:DefinitionvonsymbolischenKonstanten #definepi PräprozessorersetztvorderKompilierungjedes VorkommenvonPImit ErhöhtdieLesbarkeitundWartbarkeitdesProgramms 11
58 MakrosmitParametern Syntax:#definename(dummy1[,dummy2][,...])tokenstring ExpressionMakros übersetztineinenausdruck ähnlicheinerfunktion,dieeinenwertzurückgibt #defineradtodeg(x)((x)* ) StatementMakros übersetztineinodermehrerevollecstatements ähnlicheinerfunktion,dievoidzurückgibt #defineswap(x,y)\ do{tmp=x;x=y;y=tmp;}while(0) 12 Die Parameter in der Bezeichnerliste einer Makrodefinition müssen durch Kommas voneinander getrennt werden und innerhalb dieser Liste jeweils eindeutig sein. Man beachte, dass die Parameterliste nicht durch Leerzeichen vom Namen des Makros getrennt werden darf. Ansonsten wird alles ab der öffnenden Klammer zum Tokenstring gezählt und für den Makronamen substituiert. Der Tokenstring muss dagegen durch ein oder mehrere "weiße" Leerzeichen (whitespaces) von der Parameterliste getrennt sein, sonst sieht der Präprozessor das Makro sie als Makro ohne Parameter Beim Aufruf von RADTODEG(PI) passiert folgendes: Da der Makroaufruf selbst ein Makro enthält, wird dieses zuerst erweitert. Dann ersetzt der Präprozessor jedes Vorkommen von x im Tokenstring mit (nichtPI) DerPräprozessorsubstituiertdanndenentstandenenTokenstringfürdenMakrouafruf. Dieser Ersatz betrifft nur Terminalsymbole (also eigenständige Vorkommen von bezeichner im Quelltext), nicht aber Zeichenfolgen, die in einem Kommentar erscheinen, Teil eines anderen Bezeichners oder Teil einer Stringkonstanten sind. Makros können natürlich auch andere Makros aufrufen. Wenn die Definition eines Makros xyz den Bezeichner xyz im Tokenstring enthält, wird dieser Bezeichner nicht erneut erweitert - auch dann nicht, wenn sich die Zeichenfolge xyz erst durch die Erweiterung eines anderen Makros ergibt. Rekursive Makros sind also nicht möglich.
59 WarumKlammern? #defineradtodeg(x)(x* ) RADTODEG(a+b) (a+b* ) #defineradtodeg(x)(x)* /RADTODEG(a) 1/(a)*
60 WarumkeinSemikolonamEndeeinesMakros? SemikolonbeimAufrufsiehtnatürlicheraus >ProgrammiererkönntenSemikolonsdoppeltsetzen unddamitdencontrolfloweinesprogrammsändern #defineradtodeg(x)((x)* ); #definedegtorad(x)((x)* ); if(to_degree) y=radtodeg(x); else y=degtorad(x); if(to_degree) y=((x)* );; else y=((x)* );; 14
61 WarumkeinSemikolonamEndeeinesMakros? zusätzlichesproblembeiexpressionmakros #defineradtodeg(x)((x)* ); if(radtodeg(x)>180) if(((x)* );>180) y=radtodeg(x)+180; y=((x)* );+180; 15
62 MehrzeiligeStatementMakros /* *Swapstwovalues. *Requirestmpvariabletobedefined. */ #defineswap(x,y)\ do{\ tmp=x;\ x=y;\ y=tmp;\ }\ while(0) \ unterdrückt den Zeilenumbruch, sonst Compilerfehler 16
63 AlternativesSWAP /* *Swapstwovalues. *Requirestypepassedasparameter */ #defineswap(x,y,type)\ do{\ typetmp=x;\ x=y;\ y=tmp;\ }\ while(0) 17
64 EleganteLösung(nurgcc) /* *Swapstwovalues. *Requiresgcctypeofextension */ #defineswap(x,y)\ do{\ typeof(x)tmp=x;\ x=y;\ y=tmp;\ }\ while(0) 18
65 Warumdo{...}while(0)? #defineswap(x,y)\ tmp=x;\ x=y;\ y=tmp intx,y,tmp; if(x>y) SWAP(x,y); intx,y,tmp; if(x>y) tmp=x; x=y; y=tmp; 19
66 Warumdo{...}while(0)? #defineswap(x,y){\ tmp=x;\ x=y;\ y=tmp;\ } intx,y,tmp; if(x>y){ tmp=x; x=y; y=tmp; }; else... intx,y,tmp; if(x>y) SWAP(x,y); else DerCompilererkenntinderRegel,dassdieSchleifenureinmaldurchlaufenwirdundgeneriertkeinenCode fürsie.
67 Zusammenfassung WenneinDummy ArgumentfüreinenWert(odereinen PointerzueinemWert)steht,alleVorkommenim Tokenstringklammern DengesamtenTokenstringvonExpressionMakros klammern KeineSemikolonsamEndeeinesMakros MehrzeiligeStatementMakrosmit\trennen TokenstringvonmehrzeiligenStatementMakrosmit do{..}while(0)umschließen 21
68 WeitereProbleme dassymbolerscheintbeimtestendesprogramms mittelsdebuggernichtmehr Makroskönnensichungewolltüberschreiben MakroswerdenerstexpandiertunddahervomCompiler überprüft,wennsietatsächlichaufgerufenwerden MehrfacheSeiteneffekte #definemin(a,b)((a)>(b)?(b):(a)) x=y=1; MIN(++x,++y); 22
69 MakroStyleguide NamenskonventionGroßbuchstaben Wennmöglich,FunktionenstattMakrosverwenden Alternativen: ParameterloseMakrosconst(C90) MakrosmitParameterninline(C99) VorsichtbeiMakroszurOptimierung Makroskurzhalten keinehacks! 23
70 BedingteKompilierung 24
71 BedingteKompilierung #ifdef_win32 /*dowindowsspecificstuffhere*/ #endif #ifdef APPLE /*domacspecificstuffhere*/ #endif #ifdef linux /*dolinuxspecificstuffhere*/ #endif 25
72 Beispiel:Debugging #definepi #defineradtodeg(x)((x)* ) intdebug=1; intmain(){... if(debug) printf("pi%f",radtodeg(pi));... return0; } 26
73 Ein einfaches Debugging Makro Datei debug.h #include<stdio.h> #definedebug #ifdefdebug #definelogprintf #else #definelogif(0)printf #endif 27
74 Unser neues Hello World Dateihello.c #include debug.h intmain(){ LOG("HelloWorld!\n"); return0; } 28
75 Output des Präprozessors (gcc) $gcc Ehello.c...748weitereZeilen #11"hello.c" intmain(){ printf("hello,world!\n"); return0; } $ 29
76 define per Kommandozeile (gcc) gcc[ Dmacro[=defn]...]infile %gcc DDEBUGhello.c %gcc DDEBUG DVERBOSE=1hello.c 30 Es ist bequem, dieses,,debug`` von der Aufrufzeile des Compilers aus ein- (Testing) und auszuschalten (Release-Build), ohne daß man jedesmal die Quelldatei selbst editieren muß. (Übersetzen muß man sie trotzdem neu; ohne, daß der Präprozessor läuft, können Präprozessor-#defines nicht wirken.)
77 Hinzufügen von Debug Levels Dateidebug.h #include<stdio.h> #defineverbose0 #ifdefdebug #definelogprintf #else #definelogif(0)printf #endif 31
78 Unser neues Hello World mit Debug Levels Dateihello.c #include debug.h intmain(){ if(verbose==1)log("helloworld!\n"); return0; } 32
79 Debug Levels mit bedingter Kompilierung Dateihello.c #include debug.h intmain(){ #ifverbose==1 LOG("HelloWorld!\n"); #endif return0; } 33
80 Header-Dateien 34
81 Header Dateien 35
82 Header-Dateien HeaderDateienerkenntmananderEndung".h SiesindTeilvonSchnittstellenzwischenSystemen Sieenthalten: Funktions Deklarationen globalevariablen symbolischekonstanten Makros Datentypen(z.B.Strukturen) 36
83 Inkludieren von Header-Dateien #include <name> sucht zuerst im Verzeichnis der Systemdateien erst dann im Verzeichnis der Quelldatei wird normalerweise verwendet, um Headerdateien, die vom System geliefert werden, einzubinden (z.b. #include <stdio.h>) #include "name" sucht zuerst im Verzeichnis der Quelldatei erst dann im Verzeichnis der Systemdateien wird normalerweise verwendet, um selbst geschriebene Header-Dateien einzubinden (z.b. #include "debug.h") 37
84 I Compileroption(gcc) ErweitertbeimÜbersetzeneinesProgrammesdieListe derverzeichnisseindenennacheinerdateigesuchtwird. gcc Iincludehelloworld.c suchtnachstdio.hzuerstalsinclude/stdio.h,underst dannals/usr/include/stdio.h. 38
85 struct _IO_FILE *_chain; int _fileno; int _flags2; Präprozessor OutputvonHelloWorld off_t _old_offset; unsigned short _cur_column; #304"/usr/include/stdio.h"34 signed char _vtable_offset; char _shortbuf[1]; externintprintf( constchar* restrict format,...); _IO_lock_t *_lock; # 319 "/usr/include/libio.h" 3 4 off64_t _offset; # 328 "/usr/include/libio.h" 3 4 void * pad1; void * pad2; void * pad3; void * pad4; size_t pad5; int _mode; char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; }; typedef struct _IO_FILE _IO_FILE; _IO_FILE_plus; per Copy &struct Paste fügt #include den Inhalt der Datei stdio.h ein extern struct _IO_FILE_plus _IO_2_1_stdin_; extern struct _IO_FILE_plus _IO_2_1_stdout_; extern struct _IO_FILE_plus _IO_2_1_stderr_; # 364 "/usr/include/libio.h" 3 4 typedef ssize_t io_read_fn (void * cookie, char * buf, size_t nbytes); 39
86 Problem:Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h... 40
87 Problem:Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h... 41
88 Problem: Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h #include bar.h... 42
89 Problem:Mehrfachinklusion Datei foo.h Datei bar.h #include bar.h #include baz.h #include baz.h Datei baz.h #include bar.h... 43
90 VermeidungvonMehrfachinklusion Datei foo.h #ifndef FOO_H #define FOO_H extern int foo(int x, int y); #endif 44 Beim ersten Einfügen des Inhalts der Headerdatei in die Quelldatei wird gleichzeitig das Symbol FOO_H definiert. Der Versuch, diese Headerdatei ein zweitesmal einzufügen, scheitert an der bedingten Compilierung, da nun das Symbol FOO_H schon definiert ist. Es ist guter Programmierstil, zur Verhinderung von Mehrfach-Einfügen von Headerdateien oben beschriebenes Muster immer zu verwenden.
91 Der Präprozessor 45
92 Danke! 46
Compiler Präprozessor Header Files
Freitagsrunde C-Kurs 2012 Compiler Präprozessor Header Files Tutorium 3 ThisworkislicensedunderaCreativeCommonsAttribution NonCommercial ShareAlike3.0License Gliederung Compiler Präprozessor Header Files
MehrCompiler Präprozessor Header Files
Freitagsrunde C-Kurs 2013 Compiler Präprozessor Header Files Tutorium 3 This work is licensed under a Creative Commons Attribution NonCommercial ShareAlike 3.0 License Gliederung Compiler Präprozessor
MehrCompiler Präprozessor Header Files
Freitagsrunde C-Kurs 2011 Compiler Präprozessor Header Files Tutorium 3 This work is licensed under a Creative Commons Attribution NonCommercial ShareAlike 3.0 License Gliederung Compiler Präprozessor
MehrCompiler Präprozessor Header Files
Freitagsrunde C-Kurs 2010 Compiler Präprozessor Header Files Katrin Lang This work is licensed under a Creative Commons Attribution NonCommercial ShareAlike 3.0 License Gliederung Compiler Präprozessor
MehrProgrammierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen.
Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen. Modularisierung Zerlegung eines Programms in überschaubare Einheiten Die einzelnen Einheiten werden als Modul bezeichnet.
MehrFACHHOCHSCHULE MANNHEIM
für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen
MehrProseminar. C-Programmierung Grundlagen und Konzepte. Der Präprozessor. von: Svenja Neef
Proseminar C-Programmierung Grundlagen und Konzepte Der Präprozessor von: Svenja Neef Inhaltsverzeichnis 1Der C-Präprozessor...2 1.1Was ist der C-Präprozessor...2 1.2Präprozessor-Befehle...2 1.2.1Zusammenführen
MehrProgrammübersetzung & modulare Programme INE2 M. Thaler, Office TG208
Programmübersetzung & modulare Programme INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 slide Um was geht es? C-Quellprogramm ausführbarer Code #include Quellecodedatei
MehrEinführung Makros Includes Errors und Warnings Pragmas Diverses. Der C-Präprozessor. Lukas Stabe. Universität Hamburg
Der C-Präprozessor Lukas Stabe Universität Hamburg Proseminar C - Grundlagen und Konzepte, 2013 Lukas Stabe C-Präprozessor 1 / 19 Inhalt 1. Einführung 2. Makros 3. Includes 4. Errors und Warnings 5. Pragmas
Mehr8.1 Vom Quellcode zur ausführbaren Programm
8. Die Umgebung von C- 8.1 Vom Quellcode zur Programmausführung 8.2 Präprozessor-Anweisungen 8.3 Compiler, Assembler, Binder 8.4 Das Make-Utility 8.5 Datenübergabe vom und zum Betriebssystem 8-1 8.1 Vom
MehrDer C-Präprozessor. Lukas Stabe
Der C-Präprozessor Lukas Stabe Inhaltsverzeichnis 1 Einleitung 1 2 Makros 1 2.1 Parameterlose............................ 1 2.2 Parameterbehaftete......................... 3 2.3 Verbreitete Fehler..........................
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrC++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
MehrPräprozessor und make. einfache Makros Makros nehmen eine Textersetzung vor. Erst nach der Ersetzung muss gültiger C-Code vorliegen.
Bevor der eigentliche Kompilier-Vorgang stattfindet, wird vom sogenannten eine Vorverarbeitung durchgeführt. Hierbei werden zum Beispiel Kommentare entfernt, aber auch explizite Anweisungen an den verarbeitet.
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29
Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente
MehrEinführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
MehrEinführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
MehrPeter Prinz. Das Übungsbuch. CTestfragen und Aufgaben mit Lösungen
Peter Prinz Das Übungsbuch CTestfragen und Aufgaben mit Lösungen Grundlagen Dieses Kapitel enthält grundlegende Fragen und Aufgaben zur Erstellung von C-Programmen. Hierzu gehören folgende Themen: Header-Dateien
MehrC - PRÄPROZESSOR. Seminar effiziente C Programmierung WS 2012/13. Von Christian Peter
C - PRÄPROZESSOR Seminar effiziente C Programmierung WS 2012/13 Von Christian Peter Themen Was sind Präprozessoren? Beispiele für Präprozessoren Funktionsweisen Der C - Präprozessor Der # Präfix #include
MehrOrganisatorisches Einführung Quellen. Einführung. Praktikum C-Programmierung. Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar
Einführung Praktikum C-Programmierung Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg 2018-10-22 Michael Kuhn
MehrGrundlagen der Programmiersprache C für Studierende der Naturwissenschaften
Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 10: Präprozessor, Header und Bibliotheken Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung
MehrKurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
Mehr4 PROGRAMMSTRUKTUR - WERKZEUGE
4 PROGRAMMSTRUKTUR - WERKZEUGE Leitideen: Getrenntes Übersetzen und nachfolgendes Linken wird meistens mit Hilfe von Werkzeugen (z.b. make) durchgeführt. Bei Änderungen werden nicht alle Dateien neu übersetzt
MehrPropädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
MehrMichael Dienert. 8. Dezember 2016
C für Unverdrossene Michael Dienert 8. Dezember 2016 Vorbemerkung Natürlich könnte ich als erstes C-Programm Hello World nehmen. Um mit dem Kompiler zu spielen, kann man aber auch gleich einen sinnvolleren
MehrDr. Monika Meiler. Inhalt
Inhalt 8 Das Konfigurationswerkzeug make...8-2 8.1 Modularisierung...8-2 8.2 Modulübersetzung...8-4 8.3 Konfigurationswerkzeug make und Aufbau eines Makefiles...8-8 8.3.1 Abhängigkeiten und Kommandos...
MehrEinleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens
Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
MehrAllgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>
Allgemeines Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C #include int main() { printf( hello world\n ); return 0; } Peter Sobe 1 Verschiedene Sprachkonzepte
MehrSystemprogrammierung
IEinführung I in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: Software Engineering pproach. Springer 1991 Kernighan, Ritchie. The C Programming Language. Prentice-Hall
MehrHochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.
Praktikum Btib Betriebssysteme t I Hochschule Für Angewandte Wissenschaften FH München Sommersemester 2010 thomas.kolarz@hm.edu Folie 1 Vorbereitung Booten Sie den Rechner unter Linux und melden Sie sich
MehrHello World! Eine Einführung in das Programmieren Das erste Programm
Hello World! Eine Einführung in das Programmieren Das erste Programm Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Betriebssystem Funktion Anwendung Gerätesteuerung
MehrVorlesung Informatik I
Vorlesung Informatik I Universität Augsburg Wintersemester 2010/2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik Programmieren in C Der Compilierungsprozess 1 Aufbau eines C-Programms 1. Direktiven
MehrProgrammieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen
MehrKapitel 5: Programmerzeugung. Präprozessor Übersetzer Fehlersuche Debugger Entwicklungsumgebungen
für Elektrotechniker Kapitel 5: Programmerzeugung Präprozessor Übersetzer Fehlersuche Debugger Entwicklungsumgebungen Präprozessor Präprozessor Aufgaben Einfügen von Dateien (#include...) Ersetzen von
MehrPraxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"
Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte
MehrVorlesung Informatik I
Vorlesung Informatik I Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 11. Programmieren in C Der Compilierungsprozess 1 Aufbau eines C-Programms 1. Direktiven
MehrProgramm in Source-Files aufteilen Erhöht Lesbarkeit Aufteilung orientier t sich an logischer Struktur des Programms Getrenntes Übersetzen möglich:
Source-Files Programm == Source-File nicht sinnvoll Unübersichtlich Bei jeder kleinen Änderung gesamtes File neu übersetzen Übersetzen dauert lange Keine Gruppenarbeit möglich Programm in Source-Files
Mehr6. Grundlagen der Programmierung
Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen
MehrPraxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"
Praxisorientierte Einführung in C++ Lektion: "Die -Chain (Vom zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 19, 2012 Christof Elbrechter Praxisorientierte Einführung
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrC/C++ Programmierung
1 C/C++ Programmierung Grundlagen: Der Präprozessor Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Der Präprozessor
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
MehrInhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen
Inhalt 3 Bemerkung... 9 Vorwort... 10 1 Programme und Programmiersprachen 1.1 Assembler... 13 1.2 Höhere Programmiersprachen... 15 1.2.1 Interpreter... 16 1.2.2 Compiler... 17 1.2.3 Zwischencode... 18
MehrC- Kurs 06 Übersetzung & Module
C- Kurs 06 Übersetzung & Module Dipl.- Inf. Jörn Hoffmann jhoffmann@informaek.uni- leipzig.de Universität Leipzig InsEtut für InformaEk Technische InformaEk Übersetzung Überblick Übersetzung mit Modulen
MehrProgrammiersprachen Einführung in C
Programmiersprachen Einführung in C 14 Vertiefung einiger Themen Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in
MehrEinleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrGrundlagen der Informatik. Mathias Buhr
Grundlagen der Informatik 1 Übersicht - 2.Übung Rückblick 1. Übung Compiler prozedurale Programmierung in C Variablen Funktionen Kontrollstrukturen Literatur 2 Rückblick Information & Entropie Zahlensysteme
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 16.1.2013 IAM Institut für Angewandte Mathematik C-Präprozessor: Einfügungen Standard-Header #include Fügt den Text der Headerdatei
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrGrundlagen der Informatik Vorlesungsskript
Grundlagen der Informatik Vorlesungsskript Prof. Dr. T. Gervens, Prof. Dr.-Ing. B. Lang, Prof. Dr. F.M. Thiesing, Prof. Dr.-Ing. C. Westerkamp 16 AUTOMATISCHES ÜBERSETZEN VON PROGRAMMEN MIT MAKE... 2 16.1
MehrINE1 Präprozessor, Module. Prä(ääh)prozessor, Compiler und Linker, Lader Der Präprozessor Bedingte Übersetzung Modulare Programmierung
INE1 Präprozessor, Module Prä(ääh)prozessor, Compiler und Linker, Lader Der Präprozessor Bedingte Übersetzung Modulare Programmierung 1 Präprozessor, Compiler, Linker, Lader 2 von 66 Direkt ausführbarer
MehrK Ergänzungen zur Einführung in C
K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0
MehrDie Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen assemblerähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
MehrTeil II. Literatur zur C-Programmierung:
Teil II 2Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan, Ritchie. The C Programming Language.
MehrSoftwarepraktikum: Einführung in gcc / g++
Softwarepraktikum: Einführung in gcc / g++ (Eingebettete Systeme und Robotik),, http://ai3.inf.uni-bayreuth.de /home/db_lehre/softwarepraktikum/einfuehrungsvortraege/gcc-vortrag.01.sxi Unterschied gcc
MehrTeil 3: Lexik, Funktionen, Makefiles Gliederung
Teil 3: Lexik, Funktionen, Makefiles Gliederung Lexik Zinsberechnung Eigene Funktionen Makefiles Lexik 2 Bearbeitungsschritte des Compilers 1. Lexikalische Analyse 2. Syntaxanalyse 3. Semantische Analyse
MehrProgrammierkurs. Interdisciplinary Center for Scientific Computing, Heidelberg University. November 17, 2017
Programmierkurs Ole Klein Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University November 17, 2017 Standardbibliothek Variablen und Referenzen Aufrufkonventionen Der C++-Kompilierprozess
MehrBeispiel. Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio)
Beispiel Beispiel: Namensliste konvertieren (Karl Egon Meier Meier, Karl Egon). s/(.*) (.*)/$2, $1/; Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio) s/(.*) (.*)/$2, $1/; s/(.*) ([a-z]+
Mehr2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
MehrAlgorithmus: Kochrezept
Algorithmus: Kochrezept Ziel: Menü mit drei Gängen für 4 Personen Grundlegende Spezifikation: 1. Vorspeise: Badische Flädlesuppe 2. Hauptgericht: Überbackene Schinkenröllchen mit Spargel 3. Dessert: Vanilleeis
MehrÜbungen zu Systemprogrammierung 1
Übungen zu Systemprogrammierung 1 Ü1-2 Speicherverwaltung Sommersemester 2018 Christian Eichler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl
MehrOutline. 1 Einleitung. 2 Einführung in C. 3 Fortgeschrittenes in C. 4 Einführung in Emacs Lisp. 5 Einführung in Prolog. 6 Formale Semantik
Outline 1 Einleitung 2 Einführung in C 3 Fortgeschrittenes in C 4 Einführung in Emacs Lisp 5 Einführung in Prolog 6 Formale Semantik Imperative Programmierung Imperatives Paradigma Ziel: Ablaufbeschreibung
MehrÜbungen zu Systemprogrammierung 1 (SP1)
Übungen zu Systemprogrammierung 1 (SP1) Ü1-2 Speicherverwaltung Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
MehrEinheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten
Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik R. Spurk (Informatik)
MehrGrundlagen. Die Komponenten eines C Programms. Das erste Programm
Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen
MehrInhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15
Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen
MehrC Kurzeinführung in die Programmiersprache C. C-3 Datentypen und Variablen. C-2 Struktur eines C-Programms. C-1 Überblick. 1 Standardtypen in C
C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Datentypen legen fest: Darnell, Margolis. C: A Software Engineering Approach. Springer
MehrC Kurzeinführung in die Programmiersprache C
C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan,
MehrHerzlich willkommen!
Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Teil 6: Zusammenfassung und Beispiele Mail: wemheuer@ewla.de Online: http://cpp.ewla.de/ Zusammenfassung (1) 2 1. Programm in
MehrCompiler und Präprozessor (1) Erstellen eines Projektes
Compiler und Präprozessor (1) Erstellen eines Projektes Projekte bestehen meist aus mehreren Dateien, z.b. Quelldateien, Funktionssammlungen in Bibliotheken Zur Definition eines Projektes sind folgende
MehrÜbung zu Grundlagen der Betriebssysteme. Einführungsveranstaltung 16.10.2012
Übung zu Grundlagen der Betriebssysteme Einführungsveranstaltung 16.10.2012 Termine Übungen wöchentlich, Dienstags 14 Uhr (c.t.), Raum E312 15 Uhr (s.t.), Raum E312 Jede Woche 1 Übungsblatt http://userpages.uni-koblenz.de/~mips/bs/uebung/
MehrL4. Erster Schritt zum Programmieren
L4. Erster Schritt zum Programmieren 1 Programmierung in Hoch Beispielprogramme in FORTRAN, PASCAL und C Die Programmiersprache C Erstellung und Übersetzung eines C-Programms Das Programm Hello World Eingabe
Mehr1. Vom Sourcecode zum Programm
1. Vom Sourcecode zum Programm 1.1 Programmablauf source1.cpp source2.cpp header.h makefile Compiler Präprozessor Übersetzer Assembler object.obj object.obj Linker library.dll programm.exe Abbildung: Erstellung
MehrProgrammierung in C: Vermischtes (Teil 1)
Programmierung in C: Vermischtes (Teil 1) Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts
MehrSystemprogrammierung
Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm
MehrÜbung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9
Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere
MehrGrundlagen der Programmierung
Grundlagen der Programmierung 5. Vorlesung 09.11.2016 1 Beispiel: Hello World #include Beginn Hauptprogramm int main() { Blockbeginn printf("hello World\n"); Einbinden der Headerdatei(en) für
MehrPropädeutikum. Dipl.-Inf. Frank Güttler
Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik
MehrSyntax und Kontrollstrukturen
Syntax und Kontrollstrukturen Praktikum C-Programmierung Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg 2018-10-29
MehrFortgeschrittene Ein- und Ausgabe: Beispiel. Fortgeschrittene Ein- und Ausgabe: Beispiel
Fortgeschrittene Ein- und Ausgabe: Beispiel 1 #include 2 3 int main(void) 4 { 5 FILE *datenstrom; 6 7 datenstrom = fopen("testdatei.txt", "r"); 8 if (datenstrom == NULL) 9 { 10 fprintf(stderr,
MehrGrundlagen der Programmentwicklung
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Über C++ Über C++ C++ ist eine in der Industrie
MehrÜbersicht. C Modularisierung. Präprozessor, Compiler, Linker. Präprozessor, Compiler, Linker. Präprozessor, Compiler und und Linker Linker
Übersicht Präprozessor, Compiler und und Linker Linker Befehle des Präprozessors C Modularisierung Bedingte Kompilierung Modulare Programmierung Prinzipien der Modularisierung 1 2 Präprozessor, Compiler,
MehrDLLs (dynamic loaded libraries) mit MingW erstellen
DLLs (dynamic loaded libraries) mit MingW erstellen Autor: Michel D. Schmid Datum: April 2, 2009 Contents 1 Einführung 1 1.1 Open-Source Tools.......................................... 1 2 Beispiel 1:
MehrÜbungspaket 28 Module und getrenntes Übersetzen
Übungspaket 28 Module und getrenntes Übersetzen Übungsziele: Skript: 1. Verteilen von Programmteilen auf mehrere Dateien 2. Richtige Verwendung der Header-Dateien 3. Richtiger Umgang mit dem C-Compiler
Mehr5. Modulare Programmierung
C und C++ (CPP) 5. Modulare Programmierung Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für angewandte Wissenschaften marc.rennhard@zhaw.ch Marc
MehrModulare Programmierung und Bibliotheken
Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung
MehrInstallationsanleitung
1. C Installationsanleitung C-Programmierung mit Hilfe von Eclipse unter Windows XP mit dem GNU C-Compiler (GCC) 2. Inhaltsverzeichnis 1. Einleitung... 3 2. Cygwin... 3 2.1 Cygwin-Installation... 3 2.2
MehrINE1 Präprozessor, Module
INE1 Präprozessor, Module Prä(ääh)prozessor, Compiler und Linker, Lader Der Präprozessor Bedingte Übersetzung Modulare Programmierung Anhang: make-utility 1 Präprozessor, Compiler, Linker, Lader 2 von
MehrSystempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2
Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 29.10. Foliensatz 2 Modularisierung (T) Eigene Headerdateien und Bibliotheken (P) Arten der Parameterübergabe (P) Arrays und Strukturen
MehrEinführung in die Programmiersprache C Software Entwicklung 1
Einführung in die Programmiersprache C Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Dieses Skript gibt nur einen kleinen Einblick in C. Für eine ausführlichere und vertiefte Darstellung
MehrProgrammentwicklung mit C++ (unter Unix/Linux)
Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams
Mehr