C 为使用的所有函数实例添加新参数
我正在重构一个遗留函数,为了在现有函数中添加一个新参数,我必须手动将它添加到所有实例中。 例: 是否有任何方法可以在不手动更改所有失败实例的情况下,在所有调用中添加要调整的新参数 我正在为c项目使用EclipseIDEC 为使用的所有函数实例添加新参数,c,eclipse,C,Eclipse,我正在重构一个遗留函数,为了在现有函数中添加一个新参数,我必须手动将它添加到所有实例中。 例: 是否有任何方法可以在不手动更改所有失败实例的情况下,在所有调用中添加要调整的新参数 我正在为c项目使用EclipseIDE 注意:我不想使用“inta”作为在所有文件之间共享的全局变量。只是想找到一种简单的方法。否,必须修改func的所有调用方才能传入参数。否,必须修改func的所有调用方才能传入参数。对于大多数调用都会给出相同值的特殊情况,有一种替代方法。 您可以设置默认值。这将允许您保持这些调用不
注意:我不想使用“inta”作为在所有文件之间共享的全局变量。只是想找到一种简单的方法。否,必须修改func的所有调用方才能传入参数。否,必须修改func的所有调用方才能传入参数。对于大多数调用都会给出相同值的特殊情况,有一种替代方法。
您可以设置默认值。这将允许您保持这些调用不变,这将给出默认值。
C中的实现假定: a) 无论如何,您都必须使用非默认值编辑呼叫
b) 无论如何,您都必须在相应的标题中编辑原型
c) 无论如何,您必须编辑定义函数的sorce代码 以下是如何基于这些假设在C中实现默认值: 函数h,假设当前内容:
void func(void);
#include "func.h"
void func(void)
{ /* ... */ }
func.h,新内容:
void func(void);
void funcA(int a);
#include "func.h"
static const int iDefaultForFunc = 42;
/* as desired, this is NOT used as global variable */
void func(void)
{
funcA(iDefaultForFunc);
}
void funcA(int a)
{
/* ... */
/* probably some use of a */
}
func.c,假设当前内容:
void func(void);
#include "func.h"
void func(void)
{ /* ... */ }
func.c,新内容:
void func(void);
void funcA(int a);
#include "func.h"
static const int iDefaultForFunc = 42;
/* as desired, this is NOT used as global variable */
void func(void)
{
funcA(iDefaultForFunc);
}
void funcA(int a)
{
/* ... */
/* probably some use of a */
}
非默认调用方。c:
/* somewhere */
funcA(43); /* calling with special value */
DefaultCaller.c,无需实际更改:
/* somewhere */
func(); /* ends up calling funcA(iDefaultForFunc); */
对于大多数调用都会给出相同值的特殊情况,有一种替代方法。
您可以设置默认值。这将允许您保持这些调用不变,这将给出默认值。
C中的实现假定: a) 无论如何,您都必须使用非默认值编辑呼叫
b) 无论如何,您都必须在相应的标题中编辑原型
c) 无论如何,您必须编辑定义函数的sorce代码 以下是如何基于这些假设在C中实现默认值: 函数h,假设当前内容:
void func(void);
#include "func.h"
void func(void)
{ /* ... */ }
func.h,新内容:
void func(void);
void funcA(int a);
#include "func.h"
static const int iDefaultForFunc = 42;
/* as desired, this is NOT used as global variable */
void func(void)
{
funcA(iDefaultForFunc);
}
void funcA(int a)
{
/* ... */
/* probably some use of a */
}
func.c,假设当前内容:
void func(void);
#include "func.h"
void func(void)
{ /* ... */ }
func.c,新内容:
void func(void);
void funcA(int a);
#include "func.h"
static const int iDefaultForFunc = 42;
/* as desired, this is NOT used as global variable */
void func(void)
{
funcA(iDefaultForFunc);
}
void funcA(int a)
{
/* ... */
/* probably some use of a */
}
非默认调用方。c:
/* somewhere */
funcA(43); /* calling with special value */
DefaultCaller.c,无需实际更改:
/* somewhere */
func(); /* ends up calling funcA(iDefaultForFunc); */
只是问你是否需要像func(5)那样调用函数?您可以在c++中这样做,只需询问您是否需要像func(5)那样调用函数,不是吗?你可以在C++中完成