問題タブ [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 投票する
1 に答える
197 参照

c++ - C++ でインターフェイスへの外部参照を最適化する方法は?

VC8 を使用して、次のような 2 つのモジュールを作成します。

ヘッダ

モジュール A

モジュール B

VC8 は、基本的に 'Foo' を IFoo へのポインタとして扱うことでこれを処理します。Foo.Bar() を見つけると (モジュール B であっても)、ポインターを逆参照してオブジェクトの vtable を取得し、Bar() のアドレスを検索して呼び出します。Foo は実際には具体的なオブジェクトを参照し、常に参照するため、これは少しイライラします。以下のようなことができれば良いです。

モジュール A

これにより、この参照を裏付ける具体的なオブジェクトを提供することを約束することがコンパイラに伝えられます。次に、Foo.Bar() への特別な外部参照を生成し、二重参照解除なしでメソッドを直接呼び出すことができます。

私が知る限り、Visual C++ でこれを行う方法はなく、次の 2 つの疑問が生じます。

  1. VC コンパイラにダイレクト メソッド呼び出しを生成させる方法はありますか?
  2. それを実行できる他の C++ コンパイラはありますか?
0 投票する
1 に答える
634 参照

c - 2つのグローバル`const`変数をCモジュールで同じ値に定義するにはどうすればよいですか?

私は自分のファイルの1つでグローバル変数のペアを使用しており、それぞれ2つの異なるファイル(1つのファイル、2つの方法で前処理)の1つの宣言.cに一致しています。1つは公的消費用で、もう1つは私的使用用です。どちらも変数です。extern.h.hconst

.cファイル内の変数の1つだけを初期化し、2番目の変数を同じコンテンツに割り当てたいだけです。.c現時点でのファイルの関連コンテンツは次のとおりです。

…および対応する.h:

ここでの目標は、が定義済みに.h含まれている場合、インクルードファイルが変数にアクセスできるようにすることです。'dは私のファイルの定義にアクセスします。ただし、その定義なしで含まれている場合は、代わりに'dにアクセスできます(これは内部ファイルで使用する予定であり、必要に応じて利用できるようにします)。EXTERNALIZEPaws__Listextern.cexternList#include

しかし、Paws__List = List私のコンパイラでは割り当てが爆発し、次のエラーが発生します。

上記のようにこの機能を実現するために役立つ情報を探しています(つまりconst、ファイル内の同じ構造体に2つの名前を定義して、どちらか一方をヘッダー.cで参照できるようにします)。.h

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

iphone - 目的 c でインスタンス変数をグローバルに取得する

iphone開発初心者です。あるビューで宣言された変数に別のビューでアクセスしたいです。デリゲートを使用していますか?それを実装する方法を教えてください.Googleを閲覧してそれを達成するためのアイデアを見つけました. )それを達成する正しい方法を教えてください。ありがとう。

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

c++ - 名前空間でexternを適切に使用するにはどうすればよいですか?

rLogをWindowsでDLLとしてビルドするように取り組んでいますが、rlog名前空間の一部のグローバルシンボルに関連する未定義のシンボルエラーが発生していました。具体的には、RLogChannel.cppにあります。

問題は、1)エクスポートされなかった、2)他のものがアクセスできるように、ヘッダーで宣言されていないことだと思いました。そこで、(RLOG_DECLマクロを介して)__ declspec(dllexport)を追加し、ヘッダーに次のように配置しました。

しかし、RLogChannel.cppで変数をどのように宣言しても、ヘッダーで変数を外部化したにもかかわらず、再定義エラーが発生します...これを行う正しい方法は何ですか?簡単そうに見えますが、頭を包み込むことはできません。

編集:エラーメッセージ

(4つのシンボルすべてで同じ)

編集:何が起こったのかわかりません、コードは以前はまったく同じですが、今はコンパイルされます(MSVCの奇妙さのように感じます...)、残念ながら、ライブラリにリンクするときにシンボルが未解決として表示されます

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

c++ - extern を使用して C または C++ のファイルをインクルードする

これは C または C++ でどのように機能しますか?

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

c - externキーワードの使用に関連する疑い

AFAIK、externキーワードを宣言に使用する必要があり、externキーワードで宣言されている変数に値を関連付けることはできません。しかし、私が次のようなステートメントを書いたとすると

コンパイラは同じエラーにフラグを立てる必要がありますか?一部のコンパイラが耐性があり、これを無視しているのを見たことがありますか?なんでそうなの?「C」規格はこれについて何と言っていますか?

編集:@ All、回答ありがとうございます。私はまだ疑問があります。acなどの別のファイルにexternリンケージのないこの変数の定義があり、このステートメントをbcに追加するとします。それでも、コンパイラーがエラーのフラグを立てなくても大丈夫ですか?再定義されますか?

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

c++ - この別個の定義がエラーを引き起こすのはなぜですか?

チャレンジ:

コンパイルに失敗するこのコードがあります。何が悪いのか分かりますか?それは私に一度頭痛を引き起こしました。

一見正しいように見えます。エラーの数とエラーは!?

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

c - extern "C" has no effect in msvc++ 9.0

I manage project for JNI for both compilers: MSVC++ 8.0 and 9.0, my cpp file contains following implementation: extern "C" { JNIEXPORT jlong JNICALL Java_context_ServiceProviderContext_StartServiceProvider (JNIEnv * env, jclass, jstring jspath){ ..... }

With help of depends.exe utility I can see that MSVC 8.0 successfully exports function as it is expected: Java_context_ServiceProviderContext_StartServiceProvider But compiling under MSVC 9.0 gets me crazy it exports like ignoring extern "C" at all. depends.exe shows me: _Java_context_ServiceProviderContext_StartServiceProvider@12

Does anybody know what exactly in 9.0 project that causes this behavior?

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

c++ - extern は c++ でどのように機能しますか?

これはからのもの<iostream>です:

他の名前空間で定義されたデータ型を使用externすることで、利用できるようになりますか?

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

c++ - C++ での extern を理解する

を使用して、他のユニットで定義されていることを答えexternとして宣言しますcin

しかし、istreamで定義済み/未定義の場合はstd、違いがあるはずですよね?

コンパイラの違いは何ですか?