我對C編程中的宏有個疑問。我對宏的瞭解是,它們是預處理器指令,在編譯階段完成之後就被刪除了。所以我寫了一段代碼來測試這一點,但它的編譯階段後仍然有效:C預處理器宏
#define SWAP(x,y) {int temp; temp = *x;*x = *y;*y=temp;}
int main()
{
int data1, data2;
while((scanf("%d%d",&data1,&data2)) == 2)
{
SWAP(&data1,&data2);
printf("Data1 =%d, data2 = %d\n",data1,data2);
}
}
我不知道爲什麼這段代碼仍然有效。
你是什麼意思*它仍然在編譯階段後*? –