C ++函数的声明和定义不同,但效果很好

问题描述 投票:0回答:1

我正在编写一些C ++代码我发现一件很奇怪的事情像下面的代码一样,即使函数的声明和定义不同,它也可以很好地工作

有人知道这怎么可能吗?建立cmd:g++ main.cpp foo.cpp

// main.cpp
#include <iostream>

char foo();

int main() {
    foo();
}

// foo.cpp
#include <iostream>

void foo() {
    std::cout << "I'm foo" << std::endl;
}
c++ gcc g++
1个回答
0
投票

编译成功,因为您没有在main()中使用返回类型,它可以工作。它也基于编译规则。

链接器可能不允许并引发错误。我正在使用VS2019,但出现以下链接错误(错误LNK2019:未解决的外部符号)。

© www.soinside.com 2019 - 2024. All rights reserved.