内联函数原型与常规声明与原型

igg*_*012 3 c++ inline-functions function-prototypes function-declaration

内联函数和main之间有什么区别,如下所示:

inline double cube(double side)
{
   return side * side * side;
}

int main( )
{
    cube(5);
}
Run Code Online (Sandbox Code Playgroud)

vs只是定期声明一个函数:

double cube(double side)
{
   return side * side * side;
}

int main( )
{
    cube(5);
}
Run Code Online (Sandbox Code Playgroud)

vs功能原型?

double cube(double);

int main( )
{
    cube(5);
}

double cube(double side)
{
   return side * side * side;
}
Run Code Online (Sandbox Code Playgroud)

Moo*_*uck 6

一个inline功能可以在多个翻译单元(CPP文件+包括)来定义,并且是一个提示到编译器内联的功能.它通常放在标题中,这会增加编译时间,但可以导致更快的代码.它还允许从许多编译单元使用该函数.

//cube.h
inline double cube(double side)
{
   return side * side * side;
}

//cube.cpp
int main( )
{
    cube(5);
}
Run Code Online (Sandbox Code Playgroud)

定期定义它是常规方法,它通常在cpp文件中定义,并链接.它不容易从其他编译单元使用.

//cube.cpp
double cube(double side)
{
   return side * side * side;
}

int main( )
{
    cube(5);
}
Run Code Online (Sandbox Code Playgroud)

原型允许您告诉编译器链接时存在一个函数,即使它还不存在.这允许main调用该函数,即使它还不存在.通常,原型在头文件中,因此其他编译单元可以调用该函数,而无需自己定义.这具有最快的编译时间,并且该功能可以很容易地从其他编译单元使用.

//cube.h
double cube(double);

//cube.cpp
int main( )
{
    cube(5);
}

double cube(double side)
{
   return side * side * side;
}
Run Code Online (Sandbox Code Playgroud)