関数が引数として渡されたときにC++がinline
キーワードに従うかどうか疑問に思っています。次の例では、ループonFrame
の新しいフレームをループのが呼び出されるたびにスタックにプッシュしますか?インライン関数を引数として渡す
bool interrupt = false;
void run(std::function<void()> frame) {
while(!interrupt) frame();
}
inline void onFrame() {
// do something each frame
}
int main() {
run(onFrame);
}
これに変更すると効果はありますか?
void run(std::function<inline void()> frame) {
while(!interrupt) frame();
}
答えが確定していない場合は、これをテストする方法を見つける手助けができますか?メモリアドレスやデバッガを使用している可能性はありますか?
[インラインでは、あなたが思うものではありません](http://stackoverflow.com/q/1759300/212858)。 – Useless
関連:http://stackoverflow.com/questions/6451866/why-use-functors-over-functions – NathanOliver
これはどういう意味ですか?インライン・キーワードの目的は、関数のインライン置換が関数呼び出しより優先されることをオプティマイザに示すインジケータとして機能することです。つまり、関数の本体に制御を移すためにコールCPU命令を実行する代わりに、 * "http://en.cppreference.com/w/cpp/language/inline –