宏__COUNTER__实质上是一个int,并且是具体的数,初值是0,每预编译一次其值自己加1
一个简单的例子:
#include <stdio.h>
#define FUNC2(x,y) x##y
#define FUNC1(x,y) FUNC2(x,y)
#define FUNC(x) FUNC1(x,__COUNTER__)
//相当于int my_unique_prefix0;
int FUNC(my_unique_prefix);
//相当于int my_unique_prefix1;
int FUNC(my_unique_prefix);
//相当于int my_unique_prefix2;
int FUNC(my_unique_prefix);
void main()
{
my_unique_prefix0 = 0;
my_unique_prefix1 = 10;
printf("/n%d",my_unique_prefix0);
printf("/n%d",my_unique_prefix1);
my_unique_prefix0++;
printf("/n%d/n",my_unique_prefix0);
printf("%d/n", __COUNTER__);
}