私は静的に配列を作成し、それを他の翻訳単位で参照したいと考えています。それからそれをstatic int array[100] = {...}
と定義し、他の翻訳単位でextern int array[]
と宣言します。しかし、コンパイラは静的クラスと外部クラスの記憶クラスが互いに矛盾していると私に伝えます。1つの静的変数を複数の翻訳単位と共有するにはどうすればよいですか?
答えて
static
を削除します。 1つの.cppファイルにint array[100] = {...};
があり、ヘッダーファイルにextern int array[100];
があります。
static
は、他の翻訳単位では認識できないことを意味します。明らかにそれはextern
と矛盾します。
static
(ファイルスコープ内)は、かなりアセンブラの宣言専用ディレクティブです。これは、クラスまたは関数スコープ内でstatic
と最も確かに異なっています。
など。 zlibでは#define LOCAL static
が使用されます。
何と一緒に何をするのですか?あなたは "リンカー"を意味しましたか? –
いいえ、アセンブラ。アセンブラはシンボルテーブルを作成します。私は特定の 'gcc -c'と同様のものはリンカーを伴わない。 – moshbear
私は参照してください。いずれにしても、言語標準には「アセンブリ段階」はなく、「リンケージタイプ」のみ:-) –
変数をグローバルにする代わりに、静的にしてパブリックアクセサーと修飾子を追加することを検討してください。他のモジュールの裸の変数に直接結びつけるのは素晴らしいことではありません。
- 1. 他の翻訳単位から静的変数にアクセスすることはできますか?
- 2. 多くの翻訳単位に含まれると、静的定数のオーバーヘッド?
- 3. .NETランタイムでの静的変数の共有を防止するにはどうすればよいですか?
- 4. 1つのオブジェクトを複数のScalatestスイートと共有するにはどうすればよいですか?
- 5. 複数の共有ライブラリ用に1つのヘッダファイルをエクスポートするにはどうすればよいですか?
- 6. 静的変数は、同じ翻訳単位内の静的メソッドで使用すると初期化されることが保証されていますか?
- 7. Symfony2の:倍数のアプリ、1つの共有翻訳フォルダ
- 8. 複数のファイル間でグローバル変数を共有するにはどうすればよいですか?
- 9. 動的リンクされた共有ライブラリのグローバル変数と静的変数はどうなりますか?
- 10. Javaの静的メソッドに非静的変数を挿入するにはどうすればよいですか?
- 11. 複数の列をどのように翻訳するのですか?
- 12. 2つのViewController間でマップキットの変数を共有するにはどうすればよいですか?
- 13. 1つのフィールドを1つのクエリで共有する複数のテーブルのレコードを更新するにはどうすればよいですか?
- 14. エンティティフレームワーク:グループ単位でフレームワークステートメントに翻訳するにはどうすればいいですか
- 15. 2つのCLIスレッド間で変数(bool)を共有するにはどうすればよいですか?
- 16. cpp翻訳単位の数を減らすのがいいですか?
- 17. C++での "翻訳単位"とは
- 18. 翻訳単位とgcc間で自動的にインライン化された関数4.6
- 19. Android静的変数と共有設定
- 20. 1つのJavaScript関数を複数の関数にコールバックするにはどうすればよいですか?
- 21. 複数のアプリケーションのライブラリでシングルトン(共有)サービスを実行するにはどうすればよいですか?
- 22. どのようにjavaのGoogle翻訳から翻訳された単語を取得するには?
- 23. プロットの1つに共有X軸と複数Y軸を持つ積み上げプロットを作成するにはどうすればよいですか?
- 24. 2つのクラスを同じ変数定義を共有するにはどうすればいいですか
- 25. Symfony2コールバック検証エラーメッセージの翻訳を有効にするにはどうすればよいですか?
- 26. 2つのアクティビティ間で1つのビューを共有するにはどうすればよいですか?
- 27. 複数の単語/文をBaiduで翻訳する方法
- 28. 複数のポートレット内でJARを共有するにはどうすればよいですか?
- 29. 複数のモデルで同じビューを共有するにはどうすればよいですか?
- 30. 複数のバックエンド間でヘルスチェックを共有するにはどうすればよいですか?
"あなたはアレイを静的にする"必要があると決めたのはいつですか? –
@KerrekSB私は、大部分の人は、グローバルな 'static'変数はクラス変数' static'を作ることや、関数 'static'にローカル変数を作ることと同じことを意味すると思います。それは分かりやすい間違いですが、そんなことはほとんどありません。 –
http://stackoverflow.com/questions/4615192/why-does-the-static-keyword-have-so-many-meanings-in-c-and-c –