2017-01-30 59 views
0

我不明白爲什麼這個宏在函數調用中不起作用。如何在函數調用中使用宏?

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

但這

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

是不是預處理之前 編譯替換值。他爲什麼在抱怨?

回答

6

問題是分號;。刪除:

#define MAX 255 

否則兩個代碼示例擴大如下:

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

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

在它導致無害空語句的第二種情況。在第一個方案是不健全的。

請記住,宏定義是而不是語句。它們是預處理程序的指示,指示如何執行令牌替換。

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

是無效的語法。

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

是合法的。