Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
20.6 Beispiel e<strong>in</strong>es kle<strong>in</strong>en C-Projektes<br />
Dieses Projekt besteht aus den beiden Modulen<br />
(Dateien) ma<strong>in</strong>.c <strong>und</strong> sayhello.c. Ma<strong>in</strong>.c<br />
benutzt <strong>die</strong> Funktion SayHelloWorld() <strong>und</strong><br />
<strong>die</strong> globale Variable SayAllCount vom Modul<br />
sayhello.c <strong>und</strong> muss deshalb <strong>die</strong> Headerdatei<br />
sayhello.h mit '#<strong>in</strong>clude' e<strong>in</strong>b<strong>in</strong>den. In<br />
<strong>die</strong>ser Headerdatei s<strong>in</strong>d <strong>die</strong> Schnittstellen des<br />
gleichnamigen c-moduls deklariert. Lokale<br />
Funktionen <strong>und</strong> Variablen des Moduls sayhello.c<br />
s<strong>in</strong>d als static deklariert <strong>und</strong> von Ausserhalb<br />
nicht zugreifbar. (Das #ifndef<br />
#endif Konstrukt verh<strong>in</strong>dert des mehrfache<br />
e<strong>in</strong>b<strong>in</strong>den <strong>in</strong> <strong>die</strong>selbe .c Datei)<br />
#<strong>in</strong>clude "sayhello.h"<br />
<strong>in</strong>t ma<strong>in</strong>(<strong>in</strong>t argc, char *argv[])<br />
{<br />
while(SayAllCount < 5) {<br />
SayHelloWorld();<br />
}<br />
return 0;<br />
}<br />
/* Die Variable Count sowie <strong>die</strong> */<br />
/* Funktionen SayHello() <strong>und</strong> */<br />
/* SayWorld() s<strong>in</strong>d von hier */<br />
/* aus nicht zugreifbar */<br />
E<strong>in</strong> Beispiel zum mehrfachem E<strong>in</strong>b<strong>in</strong>den<br />
e<strong>in</strong>er Headerdatei:<br />
Die Datei A.h wird doppelt <strong>in</strong> das Modul M.c<br />
e<strong>in</strong>geb<strong>und</strong>en, <strong>die</strong>s kann zu Problemen führen.<br />
#ifndef SAYHELLO_H<br />
#def<strong>in</strong>e SAYHELLO_H<br />
/* exported (global) function */<br />
extern void SayHelloWorld(void);<br />
/* exported (global) variable */<br />
extern <strong>in</strong>t SayAllCount;<br />
#endif<br />
ma<strong>in</strong>.c sayhello.c<br />
B.h<br />
#<strong>in</strong>clude "A.h"<br />
M.c<br />
#<strong>in</strong>clude "A.h"<br />
#<strong>in</strong>clude "B.h"<br />
A.h<br />
sayhello.h<br />
#<strong>in</strong>clude <br />
#<strong>in</strong>clude "sayhello.h"<br />
/* Prototypes (local functions) */<br />
static void SayHello(void);<br />
static void SayWorld(void);<br />
/* Global Variables */<br />
<strong>in</strong>t SayAllCount = 0;<br />
/* Local Variables */<br />
static <strong>in</strong>t Count = 0;<br />
/* Function Def<strong>in</strong>itions */<br />
void SayHelloWorld(void)<br />
{<br />
SayHello();<br />
pr<strong>in</strong>tf(" ");<br />
SayWorld();<br />
pr<strong>in</strong>tf("\n");<br />
SayAllCount++;<br />
}<br />
static void SayHello(void)<br />
{<br />
pr<strong>in</strong>tf("Hello");<br />
Count++;<br />
}<br />
static void SayWorld(void)<br />
{<br />
pr<strong>in</strong>tf("World");<br />
Count++;<br />
}<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 83/147