define is absolutely not a good solution .
#define loop(n) for(int i=0;i<n;i++)
int main()
{
int i = 0;
loop(10000) { i++; };
cout << i << endl;//i==0 here,because of naming duplication.
getchar();
return 0;
}
Is there any solution other than just use a very complicate name to replace i ?