Forum: PC-Programmierung Über #define


von Wu (Gast)


Lesenswert?

Hallo,

kann jemand mir die folgenden Code erklären? Warum liegt DECLARE vor 
byte? Ich meine, das ist sinnlos.

Vielen Dank

#define Config_C
#ifdef Config_C
#define DECLARE
#else
#define DECLARE extern
#endif
DECLARE byte OS_Config_Save( void );

von ... .. (docean) Benutzerseite


Lesenswert?

damit wird die Fkt. als extern deklariert (was standard ist)...

extern ist der Gegensatz zu static...

und extern steht nur da wenn du die 1. Zeile löscht

von Wu (Gast)


Lesenswert?

Vielen Dank für deine Erklärung. Kannst Du vieleicht die Code noch 
einmal erzählen?

#ifndef V_MEMRAM0
# define V_MEMRAM0
#endif

#ifndef V_MEMRAM0
# define V_MEMRAM0
#endif

#ifndef V_MEMRAM0
# define V_MEMRAM0
#endif

V_MEMRAM0 extern V_MEMRAM1 _c_SlaveResp_buf V_MEMRAM2 SlaveResp;

von Wu (Gast)


Lesenswert?

_c_SlaveResp_buf ist ein Struktur, z.B:

typedef structur
{
  //...
}_c_SlaveResp_buf ;

von Wu (Gast)


Lesenswert?

Niemand kann das erklären?

von Karl H. (kbuchegg)


Lesenswert?

Nicht wirklich. Hauptsächlich deshalb, weil du beim
abschreiben Fehler gemacht hast :-)

Aber ganz im Ernst, so schwer ist das wirklich nicht.

#define xyz abc

legt fest, dass in Folge der Text 'xyz' durch den Text 'abc'
zu ersetzen ist. ('abc' kann durchaus auch ein leerer Text
sein, so wie in
#define xyz
Damit teilt man dem Präprozessor mit, er möge den Text xyz durch
einen leeren Text ersetzen. Aus
#dfine xyz
xyz int MyVar;
wird so der Programmtext
int MyVar;
)

Mittels

#ifdef abc
   .... mach was
#endif

kann man auch Abfragen darüber machen, ob eine Textersetzung für den
Text 'abc' definiert wurde. Nur dann wenn es eine solche Textersetzung
gibt, wird der Teil .... mach was in den Programmtext inkludiert.

Jetzt kannst du dir selbst zusammenreimen, was der ursprüngliche
(richtige) Programmcode in deinem Programm macht.

Im übrigen empfehle ich das Studium eines C-Grundlagenbuches.
Eine Sprache wie C kann man nicht durch Versuch und Irrtum
erlernen und ein Forum ist nun mal kein Ersatz für fehlende
Literatur, in der die Kentnisse systematisch und vollständig
aufgebaut werden.

http://www.mikrocontroller.net/articles/C-Pr%C3%A4prozessor

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.