3

要件が変更されたため、リファクタリングを行う必要があるため、Cダイナミックライブラリがありました。

1つのcファイルに次のコードがありました。

__attribute__((noinline))
static void *find_document(...)
{
  ...
}

bool docuemnt_found(const char *name) {
 ...
    find_document(...);
 ...
}

docuemnt_found()関数を別のcppファイルに分けました。これで、docuemnt_found()関数はfind_document()メソッドにリンクできませんか?

cファイルのヘッダーを作成してから、を使用してヘッダーをインクルードしようとしましextern "C"たが、機能しませんでした。

find_document()をインラインのままにしておきたい。ここに欠けているものや何か問題がありますか?

4

1 に答える 1

6

ここでの問題は、関数をstatic--として宣言することです。これは、同じコンパイル単位(.cファイル)内の他の関数では使用できるが、ファイル外の他の関数では使用できないことを示しています。削除staticすると問題が解決するはずです。

ちなみに、2番目の関数のつづりが間違っています-document_foundではなく、である必要がありdocuemnt_foundます。

于 2011-09-23T12:52:07.940 に答える