#define als Code verwenden

Hallo Leute,

Der Präprozessor ersetzt define-Konstante durch den Wert, den sie eben haben (bevor der Compiler loslegt). Wenn der Wert jetzt ein String ist, sollte man meinen, er macht dies dann ebenso, sodaß die Konstante als Code eingesetzt wird
(der Kommentar ist die Fehler-Meldung von VC-6 (auf WIN2K)):

#include 
#include 

#define SOME\_IF ("if (1 

Kann mir jemand sagen, warum VC-6 das nicht nimmt?
Eine andere Möglichkeit, eine String-Variable als Code einzusetzen, gibt es wohl nicht?

lg
Martin B

Hallo,

#include
#include

#define SOME_IF ("if (1

Kann mir jemand sagen, warum VC-6 das nicht nimmt?

Das ist nicht so schwer :wink:

Du musst dir nur vorstellen, wie das Ergebnis nach dem Präprozessor und vor dem kompilieren aussieht:

 "if (1 

**Ich** könnte das aucch nicht als C parsen :wink:.

Er probiert vermutlich, das als



    
    "if 1 
    
    zu parsen, und beschwert sich darüber, dass hinter dem schliessenden Anführungszeichen kein Strichpunkt kommt.
    
    HTH,
    Moritz
    
    
    
    > Eine andere Möglichkeit, eine String-Variable als Code  
    > einzusetzen, gibt es wohl nicht?
    
    
    Du musst ja keine Anführungszeichen drum rum setzen.
    
    Grüße,
    Moritz

Hallo Martin,

#include
#include

#define SOME_IF ("if (1

Kann mir jemand sagen, warum VC-6 das nicht nimmt?
Eine andere Möglichkeit, eine String-Variable als Code
einzusetzen, gibt es wohl nicht?

Also ich habe da 2 Fehler gefunden:

  1. Dein Macro ist falsch aufgebaut. Du willst doch
    „printf(„1 is kleiner.\n“);“ als Parameter übergeben.
  2. SOME_IF {printf(„1 is kleiner.\n“);}
    Du musst da normale Klammern verwenden und keine geschweifte.

So funktioniert es bei mir (allerdings mit einem IAR-Compiler getestet und nicht mit VC, MS hält sich nicht immer an den ANSI-Standard).

#include 
#include **#define SOME\_IF(x) if (1   
  
int main(void)  
{  
 // error C2143: Syntaxfehler : Fehlendes ';' vor '{'  
 SOME\_IF (printf("1 is kleiner.\n"):wink:  
  
 system("pause");  
 return 0;  
}**   

MfG Peter(TOO)

Hallo MB

#define SOME_IF ("if (1

#include

#define SOME_IF(a, b) \
if( (a)

Grüße

CMБ

Hallo Moritz,

"if (1
Ich könnte das aucch nicht als C parsen
:wink:.

Das ist einzusehen, :-].

Eine andere Möglichkeit, eine String-Variable als Code
einzusetzen, gibt es wohl nicht?

Du musst ja keine Anführungszeichen drum rum setzen.

Da wäre ich nun nicht drauf gekommen, ich dachte das sei Pflicht.
Jetzt sieht es so aus:

#include 
#include 

#define SOME\_IF if (1 

und das nimmt er auch, :smile:

@alle: es ging mir nur darum, die Konstante durch Quelltext zu ersetzen.
Vielen Dank für Eure Mühe.

lg
Martin B