代码之家  ›  专栏  ›  技术社区  ›  Prasoon Saurav

C中的隐式声明

  •  4
  • Prasoon Saurav  · 技术社区  · 14 年前

    以下程序是否调用 Undefined Behaviour 在C?

    int main()
    {
        printf("Printf asking: Where is my declaration ?");
    }
    

    在上面的程序中有一个隐式声明 printf() 那么,上面的代码是完全符合标准的,还是只是具有一些特定于实现的行为?

    1 回复  |  直到 14 年前
        1
  •  7
  •   dirkgently    14 年前

    是的。在作用域中没有声明是ub。

    J.2未定义行为

    用于调用不带 函数原型的作用域 函数是用函数定义的 原型,或者原型结束 带有省略号或 提升后的参数不是 与 参数(6.5.2.2)。

    另外,请注意,在C99中,脱离主管道是可以的(即,在语义上等同于 return 0; )对于符合C99之前版本的编译器,需要返回语句,其中 主函数的返回类型与 int .

    推荐文章