5

多くのコンパイルユニットにインクルードするヘッダーファイルに多くの小さなインライン関数を入れるのをやめました。コードはコンパイラーによって正しくインライン化され、プログラムは魅力のように機能します。

しかし、今ではヘッダーファイルは(ヘッダーファイルであるために)非常に珍しいものになっています。読みやすくするために、次のようなことを考えました。

#ifndef MY_HEADER_H
#define MU_HEADER_H

static inline 
void my_fnct (my_param a);

#include "my_header.inline.c"

#endif

ファイルmy_header.inline.cは次のようになります。

static inline 
void my_fnct (my_param a)
{
    // .. my code ..
}

次に、これらの関数が必要な場合は、ヘッダーファイルをインクルードするだけです。

私の質問は次のとおりです。ヘッダーファイルに大量のコードを入力せずにこれを実現するためのより良い方法はありますか?または私はこれを行うことができ、他の開発者が問題なくこのコードを理解することを期待できますか?

4

2 に答える 2

1

いいえ、あなたがすることはできません。inlineただし、GCCのリンク時間最適化機能を使用することもできます(関数が宣言されておらず、すべてのコンパイルユニットのヘッダーで使用できない場合でも、一部の呼び出しがインライン化される可能性があります)。たとえば、コンパイルしてリンクしますgcc -flto(これには最近のGCCコンパイラが必要です)。たとえば、少なくとも4.6で、ビルド時間が遅くなります)。

于 2012-03-25T08:27:43.340 に答える
1

私が個人的に好きではない方法は、インライン関数を.inl拡張子の付いた別のファイルに抽出することです。これは単なる慣例であり、ファイルには好きな名前を付けることができます。コードを折りたたむIDEがあるので、別のファイルを用意するのではなく、見たくないものを非表示にすることができます。

于 2012-03-25T08:28:51.323 に答える