首页 > 后端开发 > C++ > 当使用特定于语言的编译器编译时,C 和 C 中的有效代码的行为是否会有所不同?

当使用特定于语言的编译器编译时,C 和 C 中的有效代码的行为是否会有所不同?

Susan Sarandon
发布: 2024-11-08 15:10:02
原创
313 人浏览过

Can Valid Code in Both C and C   Behave Differently When Compiled with Language-Specific Compilers?

在 C 和 C 中均有效的代码在特定语言编译器中的表现是否会有所不同?

C 和 C 有许多相似之处,但也存在显着差异存在。这就提出了一个问题:当使用每种语言的特定编译器进行编译时,两种语言的有效代码是否可能表现出不同的行为。

忽略与预处理器相关的黑客行为并假设实现定义方面的一致性,这是出现这种行为差异的一种情况出现的是函数调用和对象声明的处理。

在这种情况下,下面的示例演示了 C 和 C 之间的差异:

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

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

在 C 中,此代码触发创建立即销毁的临时 f 对象。因此,它不会产生任何输出。

相反,C90 允许调用未声明的函数。因此,当使用 C90 编译器编译时,代码将输出“hello”。

这种差异的根源在于 C90 将声明 f() 视为函数调用,而 C 将其解释为f 对象的声明。这种区别突出了细微差别,这些细微差别可能导致不同编程语言的不同行为。

以上是当使用特定于语言的编译器编译时,C 和 C 中的有效代码的行为是否会有所不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

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