mikrocontroller.net

Forum: PC-Programmierung Über #define


Autor: Wu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 );

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Wu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
_c_SlaveResp_buf ist ein Struktur, z.B:

typedef structur
{
  //...
}_c_SlaveResp_buf ;

Autor: Wu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niemand kann das erklären?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.