2017-01-30 4 views
0

ich dont't verstehen, warum dieses Makro, in einem Funktionsaufruf verwendet, funktioniert nicht.Wie ein Makro in einem Funktionsaufruf benutzen?

#define MAX 255; 
printf("max value %d", MAX); 

aber das ist

#define MAX 255; 
int m = MAX; 
printf("max value %d", m); 

Ist das nicht der Präprozessor die Werte vor Compilierung ersetzen. Warum beschwert er sich?

Antwort

6

Das Problem ist das Semikolon ;. Entfernen Sie es:

#define MAX 255 

Andernfalls werden die zwei Codebeispiele erweitern wie folgt:

printf("max value %d", 255;); 

und

int m = 255;; 
printf("max value %d", m); 

Im zweiten Fall ist es in einem unschädlichen leere Anweisung führt. In der ersten ist das Programm schlecht ausgebildet. Denken Sie daran,

dass Makrodefinitionen sind nicht Aussagen. Sie sind Direktiven an den Präprozessor, die anweisen, wie Token Substitution zu tun.

0
printf("max value %d", 255;); 

ist ungültige Syntax.

int m = 255;; 
printf("max value %d", m); 

ist legal.

Verwandte Themen