以下程序是否在C中调用Undefined Behaviour
?
int main()
{
printf("Printf asking: Where is my declaration ?");
}
在上面的程序中有一个printf()
的隐式声明,上面的代码完全符合标准,还是只有一些特定于实现的行为?
答案 0 :(得分:7)
是的。 UB没有声明范围。
J.2未定义的行为
- 用于调用没有的函数 功能原型的范围在哪里 函数是用函数定义的 原型,原型结束 省略号或类型 促销后的参数不是 兼容的类型 参数(6.5.2.2)。
另外,请注意在C99中掉落main是正常的(即在语义上等同于return 0;
)。对于符合C99前的编译器,您需要一个return语句,其中主函数的返回类型是与int
兼容的类型。