1. ホーム
  2. c

[解決済み] ある関数をインライン化しないようにgccに指示するにはどうしたらいいですか?

2022-05-10 16:32:59

質問

ソースファイルに次のような小さな関数があるとします。

static void foo() {}

この関数をインライン化したくないのですが、インライン化を防ぐためにソースコードに追加できるマクロはありますか?

解決方法を教えてください。

を使用する必要があります。 gcc -特定の noinline 属性で指定します。

このfunction属性は 関数は インライン化されます。もしその関数が 副作用がある場合は インライン化以外の最適化で は、関数呼び出しが最適化される原因 関数呼び出しは を生かす。そのような呼び出しを防ぐために 最適化されないように asm ("");

こんな風に使ってください。

void __attribute__ ((noinline)) foo() 
{
  ...
}