首页 > 后端开发 > C++ > 尽管代码有效,函数调用在 C 和 C 中的行为是否会有所不同?

尽管代码有效,函数调用在 C 和 C 中的行为是否会有所不同?

Susan Sarandon
发布: 2024-11-08 14:27:02
原创
750 人浏览过

Can Function Calls Behave Differently in C and C   Despite Valid Code?

在 C 和 C 中均有效的代码在每种语言中编译时是否会表现不同?

C 和 C 有许多相似之处,但某些代码在这些语言中编译时,即使代码在语法上是有效的,构造也会产生不同的结果

函数调用与对象声明

其中一个场景涉及函数调用。在C90中,无需事先声明即可调用函数。然而,在 C 中,当不声明调用 f() 时,会创建 f 类型的对象。

示例代码:

考虑以下代码:

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
登录后复制

行为区别:

  • C90:在C90中,代码编译成功,调用了函数f(),该函数尚未声明但可以调用。它打印“hello。”
  • C : 在 C 中,代码可以编译,但不打印“hello”。相反,它创建一个类型为 f 的临时对象。一旦 f() 调用完成,对象就会被销毁,因此不会打印“hello”。

版本注意事项:

此行为差异是 C90 特有的。在 C 标准的更高版本(例如 C99)中,无需声明即可调用函数不再有效。因此,代码在 C 和 C 中的行为都是相同的。

以上是尽管代码有效,函数调用在 C 和 C 中的行为是否会有所不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板