定义与标识符相同的宏有什么用?

时间:2012-04-09 20:23:02

标签: c++ c macros

在查看poco库时,我看到一些宏具有相同的标识符以及替换文本:

例如在文件XML / inlucde / XML / expat.h

  47   XML_STATUS_ERROR = 0,
  48 #define XML_STATUS_ERROR XML_STATUS_ERROR
  49   XML_STATUS_OK = 1,
  50 #define XML_STATUS_OK XML_STATUS_OK
  51   XML_STATUS_SUSPENDED = 2
  52 #define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED

我想知道如何定义这样的宏。

2 个答案:

答案 0 :(得分:4)

我可以在这里考虑两个用例:

    如果标识符是#define d之前的其他地方,
  • 使一切正常。你不想使用它定义的值,对吗?所以在这里,您确保使用该标识符的代码有效。
  • 允许#ifdef标识符(即检查它们是否已定义)。

答案 1 :(得分:1)

这看起来确实荒谬,不是吗?我唯一的想法是它允许你在符号上使用#ifdef,但我不能看到它在这个特定的例子中有用。