假设我在 C++ 中有以下文件:
// bar.hpp
int foo();
int bar();
// bar.cpp
#include "bar.hpp"
int bar() { return 3; }
// main.cpp
#include "bar.hpp"
int main() { return bar(); }
Run Code Online (Sandbox Code Playgroud)
请注意,foo()已声明(在main.cpp和bar.cpp翻译单元中)但从未在任何地方定义。另一方面,它也没有在任何地方使用。这是合法的吗?我怀疑这在实践中很好,因为编译单元都没有引用foo符号,所以链接器永远不会尝试找到它。但我很好奇 C++ 标准是否保证这没问题。(我什至不确定标准是否讨论了链接。)