是否可以在头文件开始时重置__COUNTER__
宏,以使头文件中的评估在多个编译单元中保持一致?将__COUNTER__宏重置为零
1
A
回答
4
不,没有办法重置该值。
在递增计数器的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
表示预处理器输入,在本例中为当前编译单元,而不是实际文件。
5
您可以在头文件的顶部将BASE
设置为__COUNTER__
,稍后再使用__COUNTER__ - BASE
。
然而,做到这一点后,你已经包括了所有必要的标头,因为否则你的结果将取决于这些嵌套的头守卫内使用__COUNTER__
包括文件。
+0
如果您需要一个基于零的计数器,BASE应该设置为__COUNTER__ + 1 – rouzier
相关问题
- 1. __COUNTER__宏是否可移植?
- 2. 将对象重置为零?
- 3. 如何将BigDecimal重置为零
- 4. 得分未重置为零
- 5. 类字段重置为零
- 6. 多个__COUNTER__ C
- 7. 将IBOutlet设置为零
- 8. __COUNTER__等价于Xcode?
- 9. 重置DSum回零
- 10. Cumsum整个表并重置为零
- 11. 为什么Ajax将我的窗口滚动位置重置为零?
- 12. Kafka重置工具消费者偏移不重置为零
- 13. 时间将重置为零 - 我该如何补偿?
- 14. Delphi:如何将所有类字段重置为零值?
- 15. 由于Java/Android GC,是否可能将整数重置为零?
- 16. 在张量流中,如何将张量的行重置为零?
- 17. 在日冕中将得分重置为零的按钮
- 18. 重置版权宏观
- 19. 将第i位设置为零?
- 20. 将ActiveRecord :: Errors对象设置为零
- 21. 如何将UILabel高度设置为零
- 22. Rails - 将模型值设置为零
- 23. ForeceFully将视图高度设置为零
- 24. 将设置重置为SpecialFolder
- 25. 设置setActiveSelection为零
- 26. 即使我不将它设置为零,为什么变量为零?
- 27. 在Android Studio中,图像位置在运行时重置为零
- 28. 将OOo宏转换为Excel宏
- 29. 为什么$ k每次都通过循环重置为零?
- 30. 重设计数器为零
什么是__COUNTER__宏?它是一个编译器扩展吗?对于哪个编译器?你能提供一个指向它的文档的链接吗? –
我认为你使用的是gcc。如果您查看[documentation](https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html),“__COUNTER__”是启用唯一标识符的助手,因此即使可能,您也应该不重置它。 –