インラインマクロ展開の関数として見ることができます
呼ばれるいくつかの小さな機能を解決するために、C / C ++で頻繁にインライン改質剤の導入は、インライン関数として表現特に、(スタックメモリ)空間スタックの問題の多くを消費し、スタック領域はまた、部分データ配置プログラム(手段これは、関数データ)メモリ空間内にあります。システムの下では、スタック空間が限られている、使用の多くは、それが原因スタック空間のプログラムエラーの不足のために頻繁に発生しますならば、このような再帰的なループ機能の死などの問題を引き起こした最終結果が枯渇スタックメモリ空間を引き起こすことがある呼び出します。
する#include <stdio.hに> する#include < 文字列・H> // 関数は、即ち、インラインのように定義される:インライン関数 インラインCHAR * inline_test(INT NUM) { リターン(NUM%の2 > 0?)" 奇数":" でも" ; } int型のmain() { int型 I = 0 ; のための(I = 1 ; Iは< 10 ; I ++は) { のprintf(" inline_test:I:Dパリティ%を:%S \ N- " 、I、inline_test(I))。 } 戻り 0 。 }
dbtest(I)の場所は、(i%2> 0)「奇数」に置き換えられている:?「偶数」、これを繰り返し開いによって引き起こされるスタックメモリ消費量の頻繁に呼び出される関数を回避することができます。
インラインでの使用が制限、使用される単純なコードのインビボ漢漢数にのみ適しインラインの数、存在する
(1)複雑な構造、例えば、制御文一方、スイッチが含まれていない、インライン関数自体を直接再帰関数にすることはできませんすることができない(すなわち、 、また)独自の内部関数を呼び出します。
(2)と、すべての仮想関数を(行うための最も世俗的な、ほとんど何も除く)、インライン化を防ぐ行っ追いかけ。
仮想手段は「実行時まで待機してから呼び出すように機能するかを決定する」ので、これは、多くの驚きを引き起こしてはならない、
とインラインそれはコンパイル時に、アクションが呼び出される関数の本体を交換するために呼び出されます」という意味と言います。 "
意思決定を行うために、コンパイラは、まだ関数を呼び出すかわからない場合は、インライン関数を作るためにそれらを義務付けることは困難です。
[参考ブログ](https://blog.csdn.net/u011857683/article/details/81606433)