是否可以使用IDE取消C ++源代码中的C宏?

时间:2018-06-29 18:57:33

标签: c++ c macros

我不得不处理遗留代码,这些遗留代码在20多年前被模糊的C天才所使用,而这些宏却被模糊的宏所填充:它主要是#define用于仿真RTTI,生成虚拟,非虚拟方法,数据成员,自由函数,代码的代码它描述了多种继承关系,类型转换,不常见的循环语句等。 #define是嵌套的。我不知道这与口味或习惯有关,但我不想阅读,理解,但主要是支持和维护该代码。有关C ++的书籍说,应该像goto运算符那样很少和谨慎地使用宏。而且我想知道是否有某种工具(或编译器选项可重定向预处理器输出等),是否可以扩展这些#define宏,而无需扩展#includes,也许不触摸用户提供的过滤器/列表,在源代码中。 例如(如果只是示例,我可以使用通用宏),如果我将此工具提供给包含以下代码的源文件:

#define MAX( a, b ) ( ( a ) > ( b ) ? ( a ) : ( b ) )

int main()
{
    int x = -1;
    int y = 100;

    int max = MAX( x, y );

    return 0;
}

它将输出带有以下内容的源文件

#define MAX( a, b ) ( ( a ) > ( b ) ? ( a ) : ( b ) )

int main()
{
    int x = -1;
    int y = 100;

    int max = ( ( a ) > ( b ) ? ( a ) : ( b ) );

    return 0;
}

或者比以前的多余括号示例更漂亮:

int max =  a > b  ? a : b;

谢谢。

0 个答案:

没有答案