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

C++ 定义与标识符相同的宏有什么用,c++,c,macros,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

在查看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

我想知道这样定义宏有什么用。

这里我可以想到两个用例:

  • 如果标识符是
    #请在之前的其他地方定义
    d,以使一切正常工作。您不想使用它定义的值,对吗?因此,在这里,您可以确保使用该标识符的代码是有效的
  • 允许
    #ifdef
    对标识符进行加密(即检查它们是否已定义)
      这看起来确实很荒谬,不是吗?我唯一的想法是,它允许您在符号上使用
      #ifdef
      ,但在这个特定示例中我看不出这有什么用处。

      我们来猜测一下,但这样您就可以
      #ifdef
      它们了?