$ vi test.cpp
// code by Z.X.G., just for showing the advatanges and disadvantages of macro in C/C++
// 1 2 3 4 5 6 7 8 9 0
#define AA(b) b; b; b; b; b; b; b; b; b; b;
#define BB(b) AA(b) AA(b) AA(b) AA(b) AA(b) AA(b) AA(b) AA(b) AA(b) AA(b)
#define CC(b) BB(b) BB(b) BB(b) BB(b) BB(b) BB(b) BB(b) BB(b) BB(b) BB(b)
#define DD(b) CC(b) CC(b) CC(b) CC(b) CC(b) CC(b) CC(b) CC(b) CC(b) CC(b)
#define EE(b) DD(b) DD(b) DD(b) DD(b) DD(b) DD(b) DD(b) DD(b) DD(b) DD(b)
#define FF(b) EE(b) EE(b) EE(b) EE(b) EE(b) EE(b) EE(b) EE(b) EE(b) EE(b)
int main()
{
int i = 0;
FF(i++);
return 1;
}
$g++ test.cpp
cc1plus: out of memory allocating 1048576 bytes after a total of 402587648 bytes