6

私は常にヘッダーの外で実装を維持しようとしているので、テンプレートとインライン関数の場合、私は通常次のようなことをします


// File.h
inline bool foo()

#include "File.hpp"

// File.hpp

inline bool foo()
{
    return 1;
}

私の質問は、関数の実際の実装のためにインラインキーワードを繰り返すことについて、C ++仕様は何と言っているのでしょうか?(この例に示すように)

たくさんの関数が乱雑になるので、私は本当にそれをしたくありません。私のコンパイラは文句を言いませんが、コンパイラはまだインラインヒントを受け入れるのだろうかと思います。

誰か知ってる?

4

2 に答える 2

4

大丈夫ですが、ソースは他の翻訳ユニットには通常表示されないため、inlineソースファイルを挿入することはヒントにはなりません。ヘッダーの外側に関数を実装すると、コンパイラーはおそらくそれをインライン化できなくなります。

私の意見では、の唯一の実用的な使用法はinline、ヘッダーで定義された関数の複数の定義を防ぐことです。

于 2012-07-17T13:39:56.110 に答える
4

inlineこれは実装の詳細であり、インターフェイスの一部ではないため、インターフェイスからできるだけ遠ざける傾向があります。inlineしたがって、宣言の最初の部分を省略します。そして、それを関数定義に添付するだけです。hppコンパイラを含める場合、ファイルは連結として扱われるため、スコープはインラインに関しては無関係です。詳細な説明については、http://www.parashift.com/c++-faq/where-to-put-inline-keyword.htmlも参照してください。

于 2012-07-17T13:51:13.823 に答える