将__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

回到顶部