繁体   English   中英

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

[英]C++ function`s declaration and definition are different but it works well

我正在写一些 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;
}

编译成功,因为您没有在 main() 中接受返回类型,它可以工作。 也因为您没有使用函数的返回类型。 它忽略了那里的返回类型。 它也基于编译规则。

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

暂无
暂无

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

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