私はCプログラムを使用するためのC++共有ライブラリを作成しています。しかし、extern
とextern "C"
について質問があります。変数のexternとextern "C"
私のヘッダファイルは次のようである次のコード
を考えてみましょう:
#ifdef __cplusplus
extern "C" int global;
extern "C" int addnumbers(int a, int b);
#else
extern int global;
#endif
これは完全に正常に動作します。
int global;
私の.cppファイルまたはmy .cファイルで宣言する必要があります。しかし、私が理解できないものは次のとおりです:extern "C"
とextern
の違いは何ですか?ここでは、extern "C"
とextern
の違いは何ですか?私はextern "C" int global
をコメントアウトしてみました。どうして?
私は、extern "C"
がCリンケージを作るのに使われていることを知っています。だからこそ私はextern "C" int addnumbers(int,int)
です。つまり、Cプログラムで使用するC++関数を記述したい場合は、extern "C"
と書いています。さて、グローバル変数はどうですか?状況はここで違うと思いますか?私は、Cプログラムにglobal
という名前のC++変数を使用したいが、ではないextern
を使うことができる。何故ですか?これは私に直感的ではありません。
コメント:これは重複しているとは思われません。なぜなら、変数と関数を使用するときに違いがあるからです。
これは重複しているとは思われません。なぜなら、変数と関数の違いをどのように使うのかということです。 – Thenewstockton
私はあなたにあなたの質問にははるかに明確にするようにあなたを招待します。 –
私は 'extern" Cとexternの違いを検出するのに苦労していますが、_whatは変数のextern "C"とexternの違いです。おそらく、問題は関数と変数の両方で使用すると異なるextern "C" "です。答えは単純に" no " –