奇数C函数定义不是K& R.

时间:2013-11-21 09:58:30

标签: c turbo-c

我很久以前就遇到过一些用旧的非ansi C编写的旧代码,我试图了解函数定义。

我可以理解最终结果,但我想完全理解代码风格..

使用:

ok = ElementFn(lifestyleRollupContribution)( gr, nr, cnt, id, prj, k, f, rnd, base );

功能定义:

Private Logical ElementFn(lifestyleRollupContribution)
(
    Real*   gross,
    Real*   net,
    Const Real* contribution,
    Const Date* investment,
    Const Date* projection,
    Const PCode* key,
    Const PCode* fund,
    Const PCode* inv_prd_round,
    Const Date* inv_prd_base_date
)
{
// stuff
}

所以在这个例子中,我可以看到一个名为ElementFN的函数,它返回一个'Logical'并且有许多参数。我没有得到的是什么(lifestyleRollupContribution)它只在你看到它的地方使用了两次......但是它在做什么?它表示什么 - 我不认识。我见过对Kernighan和Ritchie样式函数声明的引用,但这似乎不是那个?

1 个答案:

答案 0 :(得分:6)

在现代C中,这只能是一个宏。例如:

#define ElementFn(name) function_ ## name
#define Private 
typedef float Logical;
typedef float Real;

Private Logical ElementFn(lifestyleRollupContribution)(
    Real   gross,
    Real   net
) {
    return 2.0f;
}

int main(void) {
    printf("%f", ElementFn(lifestyleRollupContribution)(3.05f, 42.0f));
    return 0;
}