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;
}
上記のコードをコンパイルしようとすると、コンパイラは次のエラーを報告します。
「初期化要素が定数ではありません」
悪い行は次のようになります:
struct A a = createA(42);
何が間違っているのか誰か説明してもらえますか? 私は C の経験があまりありません。 よろしくお願いします!
ベストアンサー1
struct A a = { .x = 42 };
その他のメンバー:
struct Y {
int r;
int s;
int t;
};
struct Y y = { .r = 1, .s = 2, .t = 3 };
あなたもそうすることができます
struct Y y = { 1, 2, 3 };
同じことがユニオンにも適用され、すべてのメンバーを含める必要はなく、メンバーを正しい順序に並べる必要もありません。