0

クラスとテンプレートを使用する C++ ライブラリ lib.h があるとします。また、次のカスタム C++ ヘッダー myLink.h があるとします。

#include "lib.h"

  //call methods from lib.h that use templates and classes
  //  and return an integer based off of the information gained from calling functions lib.h  
  extern "C" int foo(int param1, const int param2);

ここで、test.c という C ファイルにいるとします。次のように関数 foo() を呼び出すことは合法ですか?

//in test.c
int first = foo(5, 6);

また、コンパイルのオブジェクト コード/リンカー フェーズでは何が行われているのでしょうか?

ありがとう!

4

1 に答える 1

0

次のように関数 foo() を呼び出すことは合法ですか?

 int first = foo(5, 6);

はい、合法です。ただし、この法的な呼び出しがリンクしていることを確認するには、以下をお読みください。

コンパイルのオブジェクト コード / リンカ フェーズで何が起こっているのか?

クラスの使用は干渉しません。C++ クラスは、リンカーが理解できるオブジェクト コードにコンパイルされます。

クリス・ドッドのコメントから編集:

テンプレートは、fooそれらを呼び出すことによっても作成されます。

于 2012-07-10T03:07:35.303 に答える