将__COUNTER__宏重置为零
是否可以在头文件开始时重置__COUNTER__
宏,以使头文件中的评估在多个编译单元中保持一致?将__COUNTER__宏重置为零
回答:
不,没有办法重置该值。
在递增计数器的GCC source看看:
case BT_COUNTER: if (CPP_OPTION (pfile, directives_only) && pfile->state.in_directive)
cpp_error (pfile, CPP_DL_ERROR,
"__COUNTER__ expanded inside directive with -fdirectives-only");
number = pfile->counter++;
break;
如果你看arount这个库,无处是再次修改的counter
。它默认初始化为0
,然后在每次使用时递增。
请注意,其中counter
变量所在的pfile
表示预处理器输入,在本例中为当前编译单元,而不是实际文件。
回答:
您可以在头文件的顶部将BASE
设置为__COUNTER__
,稍后再使用__COUNTER__ - BASE
。
然而,做到这一点后,你已经包括了所有必要的标头,因为否则你的结果将取决于这些嵌套的头守卫内使用__COUNTER__
包括文件。
以上是 将__COUNTER__宏重置为零 的全部内容, 来源链接: utcz.com/qa/259668.html