C 为使用的所有函数实例添加新参数

C 为使用的所有函数实例添加新参数,c,eclipse,C,Eclipse,我正在重构一个遗留函数,为了在现有函数中添加一个新参数,我必须手动将它添加到所有实例中。 例: 是否有任何方法可以在不手动更改所有失败实例的情况下,在所有调用中添加要调整的新参数 我正在为c项目使用EclipseIDE 注意:我不想使用“inta”作为在所有文件之间共享的全局变量。只是想找到一种简单的方法。否,必须修改func的所有调用方才能传入参数。否,必须修改func的所有调用方才能传入参数。对于大多数调用都会给出相同值的特殊情况,有一种替代方法。 您可以设置默认值。这将允许您保持这些调用不

我正在重构一个遗留函数,为了在现有函数中添加一个新参数,我必须手动将它添加到所有实例中。 例:

是否有任何方法可以在不手动更改所有失败实例的情况下,在所有调用中添加要调整的新参数

我正在为c项目使用EclipseIDE


注意:我不想使用“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++中完成