1. ホーム
  2. c

[解決済み] C言語でのグローバル構造体の初期化

2022-02-25 18:25:42

質問

C言語で次のことを実現するための最良の方法は何ですか?

#include <stdio.h>

struct A
{
    int x;
};

struct A createA(int x)
{
    struct A a;
    a.x = x;
    return a;
}

struct A a = createA(42);

int main(int argc, char** argv)
{
    printf("%d\n", a.x);
    return 0;
}

上記のコードをコンパイルしようとすると、コンパイラは次のようなエラーを報告します。

initializer 要素が定数でない"

悪いのはこの行です。

struct A a = createA(42);

何が間違っているのか、誰か説明してください。 私はC言語の経験があまりありません。

どのように解決するのですか?

なぜ静的初期化を行わないのですか?

struct A a = { 42 };