06.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!