C ++の静的関数のextern

なぜ私がナッツを運転しているのか分かりませんが、それはそうです。私は定義された関数を持っていて、mainで宣言されています。

static void myFunc(int x);

static void myFunc( int x)
{
   //do stuff
}

main()

myFunc(int x)を別のクラスで使用したい。だから、私がしなければならないことは、 extern static void myFunc(int x)そのクラスのヘッダー内で、クラス定義で必要なところで呼び出しますが、機能しません。

私は間違って何をしていますか?

ありがとう

9

1 答え

相互に排他的なexternとstaticを一緒に使用することはできません。

static means Internal Linkage
extern means External Linkage

外部リンケージが必要な場合は、 extern のみを使用する必要があります。

Good Read:
what is external linkage and internal linkage in c++?

18
追加された
さて、それは私が思ったことですが、定義から静的を削除すると、それはまだ構築されません。
追加された 著者 Dixon Steel,
ありがとう、私はそれを持って、私は静的を削除し、また、私はヘッダーで間違って宣言していた。
追加された 著者 Dixon Steel,
static の有無にかかわらず、 static void myFunc(int); のように宣言を code>を定義します。
追加された 著者 David Rodríguez - dribeas,
@DixonSteel:関数の宣言定義の両方から static キーワードを削除すると、 extern 別のソースファイル(実際に翻訳単位)
追加された 著者 Alok Save,