1

次のように C で静的構造体を定義しました。

typedef static struct {
    int a;
    int b;
} Hello;

使用する前に構造体を開始する必要がありますか? その中の変数にアクセスする方法は?

4

4 に答える 4

7

最初に構造体を定義してから、静的変数でインスタンス化する必要があります

typedef struct {
  int a;
  int b;
} Hello;

static Hello hello;

次に、次のようにデータにアクセスできます。

hello.a = 42;
于 2012-08-24T10:41:29.533 に答える
2

構造体の定義とインスタンスの作成を同時に行うことができます:

static struct Hello {
  int a,b;
} hi;

struct Hello *test() { return &hi; }

ただし、私が知る限り、これを a と組み合わせる方法はありませんtypedef

于 2012-08-24T10:43:32.967 に答える
2

ストレージ クラス ( static) は型定義の一部ではありません。

実際、C 標準では、(別の) ストレージ クラスを宣言に入れることを明示的に禁止していtypedefます (§ 6.7.1)。

storage-class-specifier : typedef extern static auto register

... 宣言内の宣言指定子で指定できる記憶域クラス指定子は最大 1 つです。

構造体型の実際のオブジェクトのみを作成できますstatic(他の人が指摘したように)。

于 2012-08-24T11:04:04.373 に答える
1

構造体のインスタンスが 1 つだけ必要な場合は、次を使用できます。

static struct
{
    int a;
    int b;
} foo;

次に、直接アクセスします。foo.a = 42;

于 2016-02-04T12:22:00.813 に答える