問題タブ [storage-class-specifier]

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 投票する
3 に答える
6654 参照

c++ - extern ストレージ クラス指定子

C++ 標準のセクション 7.1 では、ストレージ クラス指定子としての「extern」について言及されています。

[注: extern キーワードは、明示的インスタンス化およびリンケージ仕様でも使用できますが、そのようなコンテキストではストレージ クラス指定子ではありません。

このキーワードと「リンケージ指定」のコンテキストでの使用については理解していますが、ストレージ指定子としての「extern」の使用法を把握できません。

  1. すべての「extern」名に静的な保存期間があるわけではありませんか?
  2. 1 に対する答えが「はい」の場合、なぜこの冗長性が生じるのでしょうか? C 互換性?
0 投票する
1 に答える
463 参照

c++ - C++ extern ストレージ クラスの寿命

私は C++ の初心者で、Java のバックグラウンドを持っています。次のことを確認したいと思います。

私はIra Pohl による分析によって C++ を読んでおり、その本には、ファイル/extern変数/関数の寿命はプログラムの期間であると記載されています (変数はクラスで宣言されていないため、これは理にかなっています)

知りたいこと; クラスで宣言された変数にも当てはまりますか? そうでない場合、変数がクラスで宣言されている場合、変数はautoストレージ クラスを使用しますか?

ありがとう。

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

c - C での extern の宣言と定義

私の知る限り、グローバル変数はCの1つから2つの異なるストレージクラスである可能性があり、宣言は2つの異なるキーワードで与えられる可能性があります。

静的変数は、宣言のモジュール内でのみ表示され、エクスポートできません。extern 宣言の場合、変数は、静的変数によってシャドウされていない限り、リンクされたすべてのモジュールの共通の名前空間にあります。

静的変数はモジュール内で定義する必要がありますが、extern 変数は別の場所で定義できます。使用する場合は定義する必要があります。

私のコンパイラ(GCC)は受け入れます

しかし、不平を言う

extern 変数がキーワード「extern」で定義されることは決してないと予想されるようです。これは、次の質問につながります。

上記の例のオブジェクト「foo」は、それが定義されているモジュールにどのような種類のストレージ クラスを持っていますか?

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

c++ - C++ 11で「auto」キーワードをストレージクラス指定子として使用できますか?

autoC++11 でキーワードをストレージ クラス指定子として使用できますか?

次のコードは C++11 で有効ですか?

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

c++ - 'FileCase' エラーに指定されたストレージ クラス

いくつかのコードをコンパイルしようとしましたが、エラーが発生しています

このエラーはどういう意味ですか?

ヘッダーファイルのプライベート部分で extern int として宣言したという事実と関係がありますか?

問題を解決できません。cpp ファイルでは、次のように宣言しています。

必要な関数内にありますが、問題は解決しません。問題が何であるかを知っている人はいますか?

ありがとう

ジス

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

c++ - 関数内の静的なストレージクラスとその理由は何ですか?

シングルトンパターンを使用している場合(ええ、私は知っています-それらは通常悪いです)...そして私は次のようなインスタンス関数を持っていました:

ストレージクラスとはinstance何ですか?

「DavidR。ButenhofによるPOSIXスレッドを使用したプログラミング」を読んでいて、次のようなテキストに出くわしました。

ほとんどの場合、ファイルスコープで、つまり関数の外部で、externまたは静的ストレージクラスを使用して条件変数を宣言します。他のファイルで使用される場合は通常の(外部)ストレージクラスが必要であり、変数を宣言するファイル内でのみ使用される場合は静的ストレージクラスが必要です。

この静的関数は関数内にあるので、自動ですか?または、静的キーワードのためにクラスが異なりますか?

'instance'変数をそのファイル内で静的でグローバル(どの関数でもない)に移動した場合でも、別のファイルへの参照を与えることができますか、それとも機能しませんか?

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

d - 純粋変数とは

このコードがコンパイルされることに驚きました。

pureは、オンライン ドキュメントの関数のコンテキストでのみ言及されています。

変数とは何ですか?また、変数とはpureどう違いますか?immutableconst

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

reference - How should I use storage class specifiers like ref, in, out, etc. in function arguments in D?

There are comparatively many storage class specifiers for functions arguments in D, which are:

  • none
  • in (which is equivalent to const scope)
  • out
  • ref
  • scope
  • lazy
  • const
  • immutable
  • shared
  • inout

What's the rational behind them? Their names already put forth the obvious use. However, there are some open questions:

  1. Should I use ref combined with in for struct type function arguments by default?
  2. Does out imply ref implicitely?
  3. When should I use none?
  4. Does ref on classes and/or interfaces make sense? (Class types are references by default.)
  5. How about ref on array slices?
  6. Should I use const for built-in arithmetic types, whenever possible?

More generally put: When and why should I use which storage class specifier for function argument types in case of built-in types, arrays, structs, classes and interfaces? (In order to isolate the scope of the question a little bit, please don't discuss shared, since it has its own isolated meaning.)

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

c++ - 他のファイルに含まれていないファイルでextern変数を使用する可能性はありますか?

私はウェブ上extern int xで、main関数が存在するmain.cにある多くの例に遭遇しました。

私が知っている唯一の用途はextern、別のファイルで宣言を行い、それを定義した後、別のファイルでそれを使用することです。

のように:ああ:extern int x;

交流 :int x = 5;

main.c: #include "a.h" // and start using x

最初のケースは私には冗長に思えます。

externそれで、他のファイルに含まれていないファイルで変数を使用する可能性のある使用法はありますか?

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

c - サブスコープを持つ関数のスタック フレーム構造

{}以下は、関数内に存在 するサブ スコープ (または) ダミー スコープ (単に ) がスタック フレームの構造にどのように影響するかを理解するために参考にしたコードです。

サンプル出力

以上の行動から、以下のように推測します。

  • スコープのスタック フレームの作成はありません{}
  • このようにしてauto、宣言/定義された変数とmainサブスコープ内の変数{}は同じスタック フレームを共有します。
  • したがって、 で宣言/定義された変数はmain、関数内のどこでも (サブ スコープ内であっても) 自由にアクセスできます。
  • 一方、サブスコープで宣言/定義された変数は、ブロックの外でそのスコープを失います。ただし、スタックフレームが存在する限り、その有効期間は有効です。

質問:上記の点が正しければ、同じ変数の複数の定義 (1 つは 内main、もう1 つは 内) を指定しても、コードが失敗しないのはなぜですか{}