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
(もちろん、関数の代わりにマクロを使用するというオプションは除きます。)