不知道是否有人有维护旧代码的经验。在某些旧代码中,我在许多地方都引用了全局变量。我想将对全局变量的所有那些引用替换为其他内容,例如函数调用。我可以在每个源文件中通过简单的#define来做到吗?例如

#define legacyGlobalVariable func1("legacyGlobalVariable")

我的func1()将接受旧变量的名称,并返回与legacyGlobalVariable相同的类型。

我知道#define可以替换形成 token 的legacyGlobalVariable。但是我不确定这种简单的技术是否无法处理任何特殊情况。例如,我知道我需要防止这种情况:
legacyGlobalVariable(23);// a badly named function same name as my global var

变得
func1("legacyGlobalVariable")(23);//but at least, it cannot compile

这种简单的技术还有其他可能的问题吗?有没有人尝试使用它?我知道要验证所有可能的情况确实需要熟悉C++,这是我暂时无法掌握的。

最佳答案

它的主要问题是 #define is evil。这不会提高代码的可读性,因此我建议您只是硬着头皮,改用编辑器的查找/替换功能。

10-07 13:38