繁体   English   中英

函数的隐式声明在 gcc 中编译但不在 g++ 中编译

[英]implicit declaration of a function compiles in gcc but not in g++

我有以下缺少函数的 C 代码

test1.c

#include <stdio.h>

int main(){
 Log("hello");
 return 0;
}

使用gcc -c test1.c将其编译为目标文件会产生一个带有警告的目标文件(链接当然会失败)。

使用g++将相同的代码(使用 iostream 而不是 stdio.h)编译为目标文件甚至无法编译,它会error: use of undeclared identifier 'Log' 为什么 gcc 不停止编译而 g++ 停止了?

C++ 不允许调用未声明的函数。 但是,在C99之前,C中有时允许未声明的函数。因此,代码在C++中不得不导致编译时错误,但在C89中可以成功编译(尽管链接会发现没有定义假设的Log 。)

从 C99 开始,不允许未声明的函数。

因为 C 和 C++ 是不同的语言,具有不同的规则。

在 C++ 中没有隐式函数声明这样的东西,并且在任何版本的语言标准中都没有。 显示的程序格式错误。

未声明的函数可以在旧版本的 C 中调用。但是,自 C99 以来,它在该语言中的格式也是错误的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM