Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Syntax Problem #define

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.12.2014, 15:28 Uhr
Bolle



Moinmoin

Zum Problem, ich bin seit ein paar Tagen dabei c zu lernen.
Jetzt bin ich beim #define und hab folgendes Problem.


C++:
#include <stdio.h>

#define tausche(x, y)   int j;  \
                      j=x; x=y; y=j;  \

int main(void)
{
    int x,y;
    tausche(4,3);
    printf("%d %d", x,y);
   return 0;
}



Hab bei mehreren tuts geguckt und versteh es nicht.
Wo liegt mein Fehler?Wie setzt man den Befehl in mehreren
Zeilen fort?

Danke schonmal.

Dieser Post wurde am 28.12.2014 um 15:43 Uhr von Bolle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.12.2014, 17:13 Uhr
Tommix



Hallo,
der Fehler ist, daß ein Makro nichts weiter als eine Textersetzung ist, keine Funktion. Der Präprozessor macht im Prinzip aus Deinem Code folgenden Quelltext für den Compiler:

C++:
int main (void)
{
int x, y;
int j;
j = 4;
4=3;
3=j;
//...


Kann nicht funktionieren.

-
Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.12.2014, 17:33 Uhr
Bolle



Das heißt #define kann nur in der nächsten Reihe
fortgesetzt werden wenn ich sowas mach?


C++:
#define blabla printf(" Text" \
     "text" \



Der j. Wolf hat als Beispiel

C++:
#define tausche(x,y)   { \
   int j; \
  j=x; usw; \
}




Das wäre dann falsch?

Der soll ja nicht so dufte sein. Bis jetzt (Kapitel 10)
hatte ich aber noch keine Probleme mit seinem Quellcode.
"3. aktualisierte und erweiterte Auflage" vllt hat sich ja was geändert.

Dieser Post wurde am 28.12.2014 um 17:51 Uhr von Bolle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.12.2014, 08:23 Uhr
Tommix



Nein, das hat nichts mit den mehreren Zeilen zu tun. Das Makro funktioniert nicht mit Konstanten. Was geht, wäre:

C++:
int x,y;
x = 4;
y = 3;
tausche(x,y);
printf("%d %d", x,y);
return 0;


Den Wert von 4 zu ändern - und das versuchst Du - ist nicht erlaubt.
Jedenfalls für uns Sterbliche .

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.12.2014, 11:18 Uhr
Bolle



Aaachso jetzt hab ichs. Danke euch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: