[英]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.