在Visual Studio2008中編寫如下代碼:
#include <iostream> using namespace std; int main() { #define MODI 10 cout << MODI << endl; #undef MODI cout << MODI + 1 << endl; return 0; }
編譯器會對 cout << MODI + 1 << endl;這行語句報錯。
原因就是#undef起的作用:
當用完一個宏,比如MODI,不希望下面的代碼再用到這個MODI,,那么就可以#undef它,那么下面如果再用到了MODI這個宏,編譯器就會報錯。
一種常用做法為:
#define MAX 50
#include "common.h"
#undef MAX
這樣就只有在common.h中才能使用宏MAX。