寻找宏将取代功能
looking for macro which will replace function
我不知道主题名称是否完全介绍了我的问题,但事实是:在我的公司代码中,有一个函数,例如:
float func_x(float a){
float b
return b
}
这个函数出现在大约1000个地方。现在添加了新功能:
void func_x2(void *a, void *b){
do sth
}
此函数应替换代码中出现的所有func_x
,因此更改应从(pseudocode):
float p = 123.33;
float x = func_x(p)
to:
float x;
float p = 123.33;
func_x2((void *)&p, (void*)&x);
我的问题是:是否甚至可能编写一些C宏(甚至非常复杂),将func_x替换为func_x2,因此代码根本不会改变?有人试过吗?
的问候J
您不仅替换了函数的实现,而且还替换了它的签名。任何声明额外变量的宏都肯定会导致错误,因为你不能在每个可以调用函数的站点都声明变量。
最好的方法是使用编辑器的查找和替换函数,逐个修复这个问题。
我不知道这些函数到底是做什么的,但如果x2只是x的扩展,你可以这样做
float func_x(float a){
float b;
func_x2((void *)&a, (void *)&b);
return b;
}
你想要的是不可能的。不过,您可以重命名/删除原来的func_x,并将其替换为只调用func_x2的函数。
不可能,因为您正在尝试修改函数定义和实现。
一个想法是使用正则表达式来替换旧函数的所有出现。
这个正则表达式捕获问题
中给出的示例^.*?s(.*)s*=s*func_x(s*(.*))
然后你可以像这样用
替换它float 2;nfunc_x2((void *)&2, (void*)&1)
当然,你可能需要稍微调整一下这个正则表达式,并且有不同风格的正则表达式,但它给了你一个想法,你可以做什么
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 寻找宏将取代功能
- CRTP可以完全取代小型设计的虚拟功能吗?