获取生成的宏的名称

时间:2016-11-18 20:32:16

标签: c++ c macros c-preprocessor

我正在使用生成的头文件,该文件在州名和值之间具有以下映射:

SAXBuilder soRead = new SAXBuilder();

  Document ReadSO;
  try {
    ReadSO = soRead.build(new File(selectedServiceOfferFile.getPath()));

    JTree loadedTree = new JTree();
    loadedTree.setModel(new DefaultTreeModel(
      new DefaultMutableTreeNode("Service Offer") {

        private static final long serialVersionUID = 1L;

        {
          add(new DefaultMutableTreeNode("Service Offer Properties"));

          List<Element> soPlans = ReadSO.getRootElement().getChild("plans").getChildren();
          for(int i=0;i<soPlans.size();i++){
            Element soPlan = soPlans.get(i);
            DefaultMutableTreeNode node_soPlan = new DefaultMutableTreeNode("Plan: "+soPlan.getAttributeValue("name"));
              add(node_soPlan);

          **List<Element> plansProps = soPlans.get(i).getChildren();**
          for (int ii=0;ii<=plansProps.size()-1;ii++){
            Element plansProp = plansProps.get(ii);
            **if (plansProp.getQualifiedName()** == "props"){
              node_soPlan.add(new DefaultMutableTreeNode("Plan Properties"));
            }
            else if (plansProp.getQualifiedName() == "section"){
              //System.out.println(plansProp.getAttributeValue("id"));
              node_soPlan.add(new DefaultMutableTreeNode("Section: "+plansProp.getAttributeValue("id")));
            }
            else if (plansProp.getQualifiedName() == "queues"){
              node_soPlan.add(new DefaultMutableTreeNode("Queue Licences: "));
            }
            else if (plansProp.getQualifiedName() == "users"){
              node_soPlan.add(new DefaultMutableTreeNode("Users: "));
            }
            else {
              node_soPlan.add(new DefaultMutableTreeNode(plansProp));
            }

            System.out.println(plansProp.getAttributeValue("id"));
          }

      }


    }
  }

使用给定的API,我可以获得当前状态的值。在大多数情况下这很好,但是我希望将状态名称打印到调试控制台以便于调试。

当我知道它的值时,有没有办法滥用预处理器来获取宏的名称?

目前我在名称和值之间有一个查找表,但这不是一个很好的解决方案,因为头文件中的宏在重新生成时会发生变化。

我已经尝试了here的一些建议,但没有取得多大成功。

0 个答案:

没有答案