我有以下缺少函数的 C 代码
test1.c
#include <stdio.h>
int main(){
Log("hello");
return 0;
}
使用gcc -c test1.c
将其编译为目标文件会生成一个带有警告的目标文件(链接当然会失败)。
使用g++
将相同的代码(使用iostream而不是stdio.h)编译到目标文件甚至无法编译,并且会提示错误:使用未声明的标识符“Log”
。
为什么gcc没有停止编译而g++却停止了?
最佳答案
C++ 不允许调用未声明的函数。然而,在C99之前,C中有时允许未声明的函数。因此,该代码在C++中必须导致编译时错误,但在C89中可以成功编译(尽管链接会发现没有假设的 Log 的定义)
.)
自 C99 起,不允许使用未声明的函数。
关于c++ - 函数的隐式声明可以在 gcc 中编译,但不能在 g++ 中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54660681/