據我所知,在lib文件中聲明爲「inline」的函數是不可能的,並且將函數「神奇地內聯」爲一個調用函數到另一個項目中(因爲鏈接與編譯不同,後者發生之前)。C++ - 如何內聯一個駐留在.lib中的函數?
如何在具有相同聲明但定義不同的多個函數(多個庫)中內聯函數?
例如
obj1.lib
void function1() { printf("Hi"); }
obj2.lib
void function1() {printf("whatsup?"); }
的main.cpp
void function1();
int main()
{
function1(); // I'd like to be able to inline this, I can steer the linking against obj1 or obj2, but I can't inline this one
}
你的意思是在內聯的優化意義上?您需要打開鏈接時間優化,其中GCC爲'-flto',MSVC++爲全程序優化。這不會保證內聯,但它至少可以實現。 –