C++内联函数的定义必须在同一个文件中吗?

Ale*_*Dan 16 c++ compiler-construction inline function

我将一个函数定义show()为在调用的头文件中内联ex.h并定义函数内部ex.cpp.我希望这会给我一个错误,因为编译器不知道在show()调用函数的地方要替换什么.但是因为我使用的是IDE,它运行正常.怎么会发生这种情况?

而BTW当我尝试手动编译它时,它给了我一个错误,show()使用但未定义.

kev*_*kev 26

必须将函数的定义(它之间的部分{...})放在头文件中,除非该函数仅在单个.cpp文件中使用.
特别是,如果将内联函数的定义放入.cpp文件中并从其他.cpp文件中调用它,则会"unresolved external"从链接器中收到错误.

[阅读更多]


Bo *_*son 6

我们通常将内联函数放在头文件中,因此编译器可以在编译使用该函数的代码时看到该定义.这样它适用于所有编译器.

一些编译器具有一次优化整个程序的功能(整个程序优化链接时间优化).即使在不同的.cpp文件中定义,这些编译器也可以内联函数.