私はC言語ではかなり新しく、コンパウンドリテラルに遭遇したばかりなので、質問が不正確であれば修正してください。コンパイルリテラル内の変数を初期化する
私は構造体を持っています。
typedef struct
{
int someVal;
} foo;
ここでは、これを次のように初期化することができます。
int main()
{
foo thisFoo = (foo) { .someVal = 2 };
}
私の質問は、私はvoid関数でsomeVal
を初期化することができ、ありますか?
void init(int *f);
int main()
{
foo thisFoo = (foo) { init(.someVal) }; // error: expected expression before '.' token
}
void init(int *f)
{
*f = 2;
}
私は何の問題もなく、関数内で構造体自体とそのそれぞれのメンバーを初期化するために管理しますが、これは、代替(あるいは合理的)である場合には興味があった選択しましたか?
'foo thisFoo; init(&thisFoo.someVal); '...' void init(int * f) { * f = 2; } ' – BLUEPIXY
@BLUEPIXY彼は機能について構造を知りたいとは思っていません。 – Barmar
@Barmar確かに、私はcomentを変更しました。 – BLUEPIXY