関数は複数の翻訳単位 (cpp ファイル + インクルード) で定義でき、inline
関数をインライン化するためのコンパイラへのヒントになります。これは通常、コンパイル時間が長くなるヘッダーに配置されますが、コードの高速化につながる可能性があります。また、多くのコンパイル ユニットから関数を使用することもできます。
//cube.h
inline double cube(double side)
{
return side * side * side;
}
//cube.cpp
int main( )
{
cube(5);
}
定期的に定義するのが通常の方法で、(通常は) cpp ファイルで定義され、リンクされます。他のコンパイル単位からは簡単に使用できません。
//cube.cpp
double cube(double side)
{
return side * side * side;
}
int main( )
{
cube(5);
}
プロトタイプを使用すると、関数がまだ存在していなくても、リンク時に関数が存在することをコンパイラに伝えることができます。これにより、main は関数がまだ存在していなくても呼び出すことができます。通常、プロトタイプはヘッダーにあるため、他のコンパイル ユニットは関数自体を定義せずに関数を呼び出すことができます。これはコンパイル時間が最速であり、この関数は他のコンパイル ユニットから簡単に使用できます。
//cube.h
double cube(double);
//cube.cpp
int main( )
{
cube(5);
}
double cube(double side)
{
return side * side * side;
}