0

私は現在Cを学んでいます.typedefと構造体をいじっていて、奇妙なエラーに遭遇しました(少なくとも経験の浅い私の目には)。

typedef を使用してディメンション型 (2 つの値の int 配列) を作成しています。その型定義を使用する構造体があります。

メインのフィールドに値を指定しようとすると、エラーが発生します。

error: expected expression before ‘{’ token

コード:

typedef int dimensions[2];

struct television
{
    dimensions resolution;
};

int main()
{
    struct television theTV;
    theTV.resolution = {1024, 768};

    return 0;
}

これは非常に不自然な例です。この方法で .resolution 変数を初期化することは可能ですか?

4

2 に答える 2

3

代わりに使用してください:

struct television theTV = {{1024, 768}};

{}初期化子リストは宣言でのみ使用でき、ステートメントでは使用できません。

于 2013-08-05T21:10:17.777 に答える
2

配列は変更できない左辺値であるため、配列への代入は使用できません。memcpy()ただし、複合リテラルで使用できます。

memcpy(theTV.resolution, (dimensions){1024, 768}, sizeof(dimensions));
于 2013-08-05T21:12:30.023 に答える