我很久以前就遇到过一些用旧的非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样式函数声明的引用,但这似乎不是那个?
答案 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;
}