加入一个工程有一堆的宏定义,如:
#define XXX 123
#define YYY 456
// ... 有很对,分布到不同的文件中。现在要求,当给出123的时候,能够查找到全部宏定义值是123的宏符号。我现在的做法:
收集全部宏定义,然后做一个宏定义到宏符号的multi-map表。
然后查找这个表,从而得到宏符号。
问题是:收集过程完全是手工进行,体力劳动很痛苦,而且无聊。各位高手有没有什么好的方法,包括复杂的语法分析都可以,关键是能够实现。

解决方案 »

  1.   

    欢迎各路高手发表看法,如果当初想到需要方向查找的话,定义宏的时候直接吧符号保存到一个map中就爽了,可是现在有太多现成的代码了。无法那样做!
      

  2.   

    对所有文件查找.比如遇到#define ..123 就吧这行取出.然后往下找,知道找完所有文件.再然后将得到的所有结果存盘.
      

  3.   

    情况还远比刚开始提问的复杂很多啦,.^_^。
    比如:
    #define MAKE_SYM(XX) ((0x123<<8)+XX)
    #define MY_SYM1 MAKE_SYM(1)
    #define MY_SYM2 MAKE_SYM(2)
    // ...
    这样还要涉及到计算!越想越复杂的啊!
    我在想能不能编译器的预处理程序帮帮忙!帮我做好了预处理的分析和计算工作得到一个列表给我之后就好办了,.^_^。不知道有没有做编译器(或者熟悉编译器)的高手指点一下是否可以呢?