以下程序是否调用 Undefined Behaviour 在C?
Undefined Behaviour
int main() { printf("Printf asking: Where is my declaration ?"); }
在上面的程序中有一个隐式声明 printf() 那么,上面的代码是完全符合标准的,还是只是具有一些特定于实现的行为?
printf()
是的。在作用域中没有声明是ub。
J.2未定义行为 用于调用不带 函数原型的作用域 函数是用函数定义的 原型,或者原型结束 带有省略号或 提升后的参数不是 与 参数(6.5.2.2)。
J.2未定义行为
用于调用不带 函数原型的作用域 函数是用函数定义的 原型,或者原型结束 带有省略号或 提升后的参数不是 与 参数(6.5.2.2)。
另外,请注意,在C99中,脱离主管道是可以的(即,在语义上等同于 return 0; )对于符合C99之前版本的编译器,需要返回语句,其中 主函数的返回类型与 int .
return 0;
int