一个面试问题的cdecl关键字出现较强的混乱在我的脑海即让我们看看这个节目Pascal和C语言
#include "stdio.h"
int main()
{
static int a=25;
void cdecl conv1();
void pascal conv2();
conv1(a);
conv2(a);
return 0;
}
void cdecl conv1(int a,int b)
{
printf("%d%d", a, b);
}
void pascal conv2(int a,int b)
{
printf("\n%d%d", a, b);
}
输出是
25 0
0 25
但是,为什么?如何?
你能简单地向我解释一下,因为我不理解UGC书中提到的这个程序。
请帮助我更好地理解这个概念,以便我可以更好地为我的面试做准备。
感谢您宝贵的时间。
你的问题还不清楚。该程序无效C或Pascal。 – StoryTeller
'cdecl'和'pascal'不是C语言的一部分,但是针对不同调用约定的编译器扩展。显然它们会影响参数传递给函数的方式。但是,当您调用具有错误数量参数的函数时,会发生什么情况并不是太有趣。我会认真的不想为一家使用它来筛选申请人的公司工作。 –
您在Windows上使用Microsoft Compiler?你应该在你的问题中提到平台和编译器...... – Scheff