0

例えば:

#include "ist1.h"
class ist2:public ist1
{
public:
    inline ist2();
    int y;
    void say();

};

キーワード「インライン」は、注文ではなくコンパイラへの明示的な「提案」だと思いますが、なぜエラーが表示されるのですか?なぜコンパイラは「インライン」を無視しないのですか?

4

2 に答える 2

1

エラーの内容をお知らせするのを忘れていました。投稿したコードにエラーはありません。

おそらく、リンカーから「未定義の参照」(または同様の) エラーが発生しています。これは、インライン関数を使用するすべての翻訳単位でインライン関数を定義する必要があるためです。実際には、定義をソース ファイルではなくヘッダーに配置する必要があります。

エラーが別のものである場合は、それが何であるかをお知らせください。

キーワード「インライン」は、注文ではなくコンパイラへの明示的な「提案」だと思います

それはよくある誤解です。コンパイラがインライン化するかどうかを決定する際のヒントとして使用される可能性がありますが、意味的な意味もあります。

  • インライン関数、すべての定義が同一である限り、複数の翻訳単位で定義できます。通常の関数は、プログラム内で 1 つの定義しか持つことができません。
  • インライン関数は、それを使用するすべての翻訳単位で定義する必要があります。
于 2013-09-11T11:28:25.227 に答える