我在一个巨大的程序中有大量的my_printf()函数调用。我现在要将它们全部转换,以便该函数接受一个新的整数参数(称为x),而不必编辑大量的调用。如果my_printf永远只花了只有一个字符串参数然后我可以做这样的事情:#define和具有可变长度参数的函数
#define my_printf(str) _my_printf(x,str)
void _my_printf(int x,char *str) // changed from my_printf(char *str)
{
// stuff
}
但作为my_printf采用可变数量的参数,我不知道该怎么做。可以做到吗?
编辑:对于那些想知道我为什么要想做这样的事情,这里有一个相关的例子:
#if BELT_AND_BRACES_DIAGNOSTIC_MODE
#define function(x) _function(__FILE__,__LINE__,x)
#else // speed critical optimised mode
#define function(x) _function(x)
#endif
#if BELT_AND_BRACES_DIAGNOSTIC_MODE
void _function(char *file,int line,int x)
#else
void _function(int x)
#endif
{
// stuff
#if BELT_AND_BRACES_DIAGNOSTIC_MODE
if (something_went_wrong)
{
printf("Cock up in function when called from %s line %d\n",file,line);
}
#endif
}
+1咬子弹。有了今天的编辑们重构支持等,你应该笑。哎呀,15年前我的编程编辑器可以非常容易地进行全局搜索,并在整个目录树中替换由通配符指定的文件,无论我是否先预览结果。 (如果你想宏观,那么你可以盲目地做。) – 2009-09-29 10:41:33
看我编辑原始问题 – Mick 2009-09-29 11:08:21
+1。把它看作是一个学习机会,以便真正掌握现代编辑器可以做什么(或者如果你足够长的时间,Vim或Emacs能做什么 - 他们可以做的事情,Visual Studio只是捕捉与......一起)。 – AAT 2009-09-29 15:40:06