c++ - 为什么下面的程序可以编译?

标签 c++

#include<iostream>

using namespace std;

int main()
{
    int abc();
    return 0;
}

当编译器到达 int abc(); 行时,它正确地认为我们正在声明一个名为 abc 的函数,该函数不接受任何参数并且其返回类型是int类型。那为什么编译器不给我一个错误,因为我没有定义一个名为 abc 的函数?

最佳答案

声明一个函数而不定义它不是错误。该函数可能已在另一个文件中定义。在 C++ 中,每个编译单元(C++ 文件)都是单独编译的,然后链接在一起。

链接器也不会显示错误,因为您没有尝试使用该函数。如果您尝试使用它,链接器将在所有编译单元中搜索定义,并在找不到定义时显示错误。

关于c++ - 为什么下面的程序可以编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50965900/

相关文章:

c++ - Eigen eulerAngles() 返回不正确的值

c++ - linux - 在多处理器系统上以微秒精度打印当前时间

C++ 卡夫卡客户端 (rdkafka)

c++ - 字符串到 SecByteBlock 的转换问题

c++ - 我可以加快自己的应用程序构建速度(针对目标平台进行优化)吗?

C++:作为条件语句的逻辑比较?

c++ - 一元 ‘*’ 的无效类型参数(有 ‘int’ )

c++ - 基于范围的锁守卫和返回值的时间

c++ - 应该在哪里指定默认参数?

c++ - 当右值不实现 move 时,在具有 move 语义的容器上实现 insert()