4

funcs.h関数の宣言があるファイルがあります:

inline void some_func( void ) __attribute__((always_inline));

funcs.c次に、関数の実装があるファイルがあります。

inline void some_func( void ) { … }

次に、メイン ファイルmain.c#include、コードのどこかでfuncs.h使用しようとします。some_func()しかし、プログラムをコンパイルしてバイナリ ファイルを見ると、関数はインラインとして埋め込まれているのではなく、通常の個別の関数としてコンパイルされ、他の通常の関数と同じように呼び出されているように見えます。

なぜそれが起こっているのですか?実際のインライン化をこれに強制する方法はありますか? #define(もちろん、関数の代わりにマクロを使用するというオプションは除きます。)

4

1 に答える 1