![]() |
1
4
第一个片段:
当你写作
然后编译器遇到
如果你把
隐式声明已经成为过去,现在不应该再使用了。 顺便说一句: 没有 未定义行为 参与其中。 未定义的行为 是完全不同的东西。 我建议您阅读以下内容: Undefined, unspecified and implementation-defined behavior |
![]() |
2
2
不,它也不编译。为了避免编译器已经发现错误的代码疑难解答的麻烦,请确保使用一致的C编译器,请参阅 What compiler options are recommended for beginners learning C? 当使用正确配置的兼容C编译器时,我们会得到以下错误:
某些编译器决定在未设置为严格遵守模式时生成可执行文件的原因是历史原因。32年前(古代!)的编译器有一个叫做“隐式函数声明”和“隐式int”的特性。这意味着,当编译器遇到对尚未声明/定义的函数的函数调用时,它猜测该函数的返回类型为
如果不是这样,我们会得到未定义的行为,任何事情都可能发生。例如函数返回
在23年前发布的C99版本中,这个语言设计缺陷已从C中删除。 您可能没有理由使用古老的编译器模式,所以只需使用上面链接中给出的选项进行编译即可。 |
![]() |
Hard_Course · 用另一列中的值替换行的最后一个非NA条目 4 月前 |
![]() |
KGB91 · 初始化一个用C存储函数的字典# 5 月前 |
![]() |
RobertF · 如何将函数应用于矩阵的每个元素? 6 月前 |
![]() |
user2986042 · C编译错误“调用的对象不是函数或函数指针” 10 月前 |