用预处理器replace一个函数

我必须做一个可怕的事情 ,即在预编译时自动用一个不同的函数调用,用不同数量的参数replace一个函数调用。 例:

#include <iostream> int FuncToChange(void* a, int b, void* c, int d) { return 0; } int NewFunc(void* a, void* c, int d) { return 1; } #define FuncToChange($1, $2, $3, $4) NewFunc($1, $3, $4) int main() { int a = 1, b = 2, c = 256; int v = FuncToChange(&a + 1, c + 1, &b, 2*c); } 

这个代码工作,即在main() NewFunc()而不是FuncToChange()

现在我想删除#define(原因是我不能修改代码 ),并获得相同的结果设置IDE的构build选项。

IDE是CodeBlocks 10.05。

我已经尝试添加以下内容到项目/项目构build选项/编译器设置/#定义:

 NewFunc($1, $3, $4)=FuncToChange($1, $2, $3, $4) 

但没有任何改变。 有人有什么想法吗?

先谢谢你!

彼得罗

平台
GCC / MinGW的
Windows7 64位


这个问题背后的原因:

我必须将XP插件中的Excel插件移植到Windows 7 64位。 该插件是用CodeBlocks开发的,我不能更改工具集。 文件FRAMEWRK.C(“2010 Office System Developer Resources”,Excel2010 XLL SDK的一部分)已经发展,现在使用对非标准函数(如memcpy_s()调用,在MinGW中不可用。 所以,在预处理器中,我将memcpy_s()replace为memcpy() ,负责处理不同的参数。

好。 我将#define移动到了自己的包含文件中。 然后我用-include命令行选项将它指定给GCC。
这样做,文件被包含在每个源文件的顶部。