問題タブ [extern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
840 参照

c++ - C++ の extern キーワードの問題

次の 2 つの宣言の違いは何ですか? それらは同等だと思いましたが、最初のサンプルは機能し、2 番目のサンプルは機能しません。つまり、コンパイルして実行できますが、ビットマップ表示コードが空白になります。まだ踏み込んでいませんが、明らかな何かが欠けていますか? GUI_BITMAP は、ビットマップを記述する単純な構造です。これは VC++ 2005 用ですが、VC++ 2008 でも失敗すると思います。これに頭をかいて...

サンプル 1:

サンプル 2:

編集:さらに調査すると、2番目の例は構造体を作成しているのに対し、最初の例は外部構造体を参照していることが示されています。2 番目の例は、グローバル スコープに同じ名前の 2 つの変数があるため、リンクに失敗するはずです。しかし、そうではありません。ゼロで満たされた構造体を表示コードに送信しますが、表示コードはあきらめます。うーん.....

編集 2:別のコンパイラ (IAR) を介して同じコードを実行すると、実際にはサンプル 2 でコンパイルに失敗し、デフォルトのコンストラクターが見つからないというエラーが発生しました。したがって、「extern」キーワード、構造体、および C++ について、私が理解できない微妙な点があると推測しています。extern 領域にあるものが関数である場合、2 つのサンプルは同一になりますよね?

0 投票する
1 に答える
8090 参照

c - C: const struct の配列内の外部 const int

外部定数整数を使用して構造体の配列を初期化するときに、「式には定数値が必要です」というエラー メッセージが表示されます。

File1.c:

File2.c:

Get_Byte.c:

フィールドconstから修飾子も削除しましたが、同じエラーメッセージが表示されます。sizeArray_Attributes

data1_sizedata2_sizeconst unsigned int別の翻訳単位にあるのに、コンパイラが定数値式について不平を言うのはなぜですか?

コンパイル時に生成される[配列アドレス、配列サイズ]の定数配列が欲しいです。

ccarmWindows XP でGreen Hills 4.24 を使用しています。C言語ではなくC++ です。

0 投票する
5 に答える
3916 参照

c++ - C++ 共有ライブラリのヘッダーで「extern "C"」を宣言すると、どのような影響がありますか?

この質問に基づいて、C ライブラリを C++ コードにリンクする際の構成の目的を理解しています。ここで、次のように仮定します。

C++ コンパイラでコンパイルされた '.so' 共有ライブラリがあります。ヘッダーには、「typedef stuct」と多数の関数宣言があります。ヘッダーに extern "C" 宣言が含まれている場合...

…効果は?具体的には、共有ライブラリが C ではなく C++ としてコンパイルされているため、その宣言に有害な副作用があるかどうか疑問に思っています。

この場合、extern "C" 宣言を行う理由はありますか?

0 投票する
5 に答える
66187 参照

c++ - 関数のC++externキーワード。なぜヘッダーファイルだけをインクルードしないのですか?

私がそれを正しく理解していれば、これは

関数fooが別の変換単位で宣言されていること。

1)この関数が宣言されているヘッダーを#includeしないのはなぜですか?

2)リンカは、リンク時に関数を探す場所をどのようにして知るのですか?

編集:たぶん、上記の宣言の後に関数を使用することを明確にする必要があります

この翻訳単位では定義されていません。

0 投票する
1 に答える
1139 参照

c# - System.Coreのexternエイリアスを作成するにはどうすればよいですか?

System.Core私のプロジェクトでは、externエイリアスが絶対に必要です。System.Core残念ながら、.Net 4.0プロジェクトでは、ビルドシステムにデフォルトで参照が含まれているため、への参照を追加することもできません。このlibのexternエイリアスを指定できるようにシステムを強制する方法について誰かが何か考えがありますか?ありがとう!

0 投票する
4 に答える
4669 参照

c - ヘッダーに変数を配置する場合とソースに変数を配置する場合の違い

変数を使用してヘッダー ファイルを宣言するとします。

次に、ソース ファイルでcount. 次のように宣言する必要がありますか?

または、ソース ファイルでそのまま使用できますか? すべて私が持っていると仮定します#include "someheader.h"。それとも、ソース ファイルで宣言する必要がありますか? ヘッダー ファイルとソース ファイルの違いは何ですか? countそれとも関係ありませんか?

0 投票する
5 に答える
24195 参照

c - cのexternとglobal

CプログラムでEXTERNまたは変数のいずれかを使用するための特別な要件があることを教えてください。GLOBALgloabl から extern に変更しても、以下のようなプログラムに違いは見られません。

uncomment の場合extern int myGlobalvar、値は変更されません。

correct両者に違いはありますか?

誰でも私を修正してもらえますか?

0 投票する
4 に答える
1964 参照

c++ - C ++:extern"C"とクラスメンバー間の名前空間の競合

私はかなりエキゾチックなc++名前空間の問題に遭遇しました:

要約例:

C++メンバー関数A::solveでc関数solveを呼び出したい。コンパイラは私の意図に満足していません:

解決関数の前に何かを付けることができますか?C::solveが機能しない

0 投票する
3 に答える
6699 参照

c++ - MSVCを使用してC++でextern、C struct戻り関数を定義するにはどうすればよいですか?

次のソースファイルは、MSVCコンパイラ(v15.00.30729.01)ではコンパイルされません。

でコンパイルするとcl /c /Tpstest.c、次のエラーが発生します。

なしでコンパイルすると(ファイルをC ++として扱う/Tpように指示されます)、正常に機能します。clこのファイルは、CモードとC ++モードの両方で、DigitalMars CおよびGCC(mingwから)でも正常にコンパイルされます。私も-ansi -pedantic -WallGCCで使用しましたが、不満はありませんでした。

以下で説明する理由により、このファイルをMSVC用にC ++としてコンパイルする必要があります(他のファイル用ではありません)が、関数はCとしてコンパイルされます。基本的に、通常のCコンパイラが必要です...約6行を除く。これを機能させるためのスイッチや属性、または追加できるものはありますか?


問題のコード(上記ではありませんが、これは単なる縮小例です)は、コードジェネレーターによって生成されています。

この一環として、浮動小数点のnanと無限大を定数として生成できる必要があります(長い話)。つまり、実際にこれを行うには、C++モードでMSVCを使用してコンパイルする必要があります。動作するソリューションは1つだけで、C++モードでのみ動作します。

extern "C" {...}既存のCコードとインターフェイスできるように、マングリングと呼び出し規約を制御したいので、コードをラップしています。...また、小さなデパートを投げることができる限り、C++コンパイラを信頼しているからです。また、行だけをで囲むようにしましたが、もちろんそれは機能しません。残念。reinterpret_castextern "C++" {...}

完全な構造体定義が関数fowarddecl。のに来るように宣言を並べ替える必要があると私が見つけた潜在的な解決策がありますが、これはcodegenの実行方法のために非常に不便なので、そうする必要はありません。できればその道を進んでください。

0 投票する
3 に答える
43087 参照

c - extern キーワードの意味は何ですか?

externキーワードの意味は?次のような関数宣言の前でそれを見ました