次のように C で静的構造体を定義しました。
typedef static struct {
int a;
int b;
} Hello;
使用する前に構造体を開始する必要がありますか? その中の変数にアクセスする方法は?
最初に構造体を定義してから、静的変数でインスタンス化する必要があります
typedef struct {
int a;
int b;
} Hello;
static Hello hello;
次に、次のようにデータにアクセスできます。
hello.a = 42;
構造体の定義とインスタンスの作成を同時に行うことができます:
static struct Hello {
int a,b;
} hi;
struct Hello *test() { return &hi; }
ただし、私が知る限り、これを a と組み合わせる方法はありませんtypedef
。
ストレージ クラス ( static
) は型定義の一部ではありません。
実際、C 標準では、(別の) ストレージ クラスを宣言に入れることを明示的に禁止していtypedef
ます (§ 6.7.1)。
storage-class-specifier : typedef extern static auto register
... 宣言内の宣言指定子で指定できる記憶域クラス指定子は最大 1 つです。
構造体型の実際のオブジェクトのみを作成できますstatic
(他の人が指摘したように)。
構造体のインスタンスが 1 つだけ必要な場合は、次を使用できます。
static struct
{
int a;
int b;
} foo;
次に、直接アクセスします。foo.a = 42;