C++のインライン拡張されていませんが、私は機能は、私はswitch文を使ってC++でプログラムをコンパイルしようとした
「スイッチを含む関数がインラインを拡張されていません」という警告メッセージが表示されましたが
私のプログラムは正しい出力を出しましたが、私はこの警告メッセージの意味を知りたいと思います。
C++のインライン拡張されていませんが、私は機能は、私はswitch文を使ってC++でプログラムをコンパイルしようとした
「スイッチを含む関数がインラインを拡張されていません」という警告メッセージが表示されましたが
私のプログラムは正しい出力を出しましたが、私はこの警告メッセージの意味を知りたいと思います。
あなたの質問に答えるための入力がさらに必要になります。
コードのスイッチケースを含む関数に対して、インラインキーワードを明示的に使用していますか? もしあなたが(私はあなたが持っていると思う)場合は、コンパイラはその関数をインラインとして扱う要求を無視することができます。 コンパイラは、インライン関数を無視して、いくつかの例がありますが、以下のように、彼らは以下のとおりです。ループを含む
上記は私が当面思い出すことのできるいくつかの条件です。
標準では必須ではありませんが、スイッチは通常、スイッチポインタがキーとなる関数ポインタの配列に変換されます。関数がインライン化されていれば、関数ポインタが異なる可能性があるため、この配列の別々のコピーが各場所に必要でした。これは非常に効率的ではありません(キャッシュの仕組みのおかげで、メモリとスピードの両方に関して)、これはコンパイラがインライン化しないことを決定するかもしれません。 (巧妙なアーキテクチャの巧妙なコンパイラは、この配列のプログラムカウンタの相対アドレスを使用するかもしれないので、この動作はコンパイラ固有のものです)。
[最小、完全で、かつ検証可能な例]を投稿してください。http://stackoverflow.com/help/mcve)。 –
http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/devwin32/wrnnoinlexp_xml.htmlをご覧ください。 – Jarod42