私のコードは以下の通りですが、なぜlvalue
が起きているのかという問題も以下に説明されています。lvalueはc関数ポインタの単項 '&'オペランドとして必要です
typedef struct test_item
{
char id[MENU_NAME_LEN + NULL_SPACE];
MenuFunction function;
} test_item;
と
typedef void (*MenuFunction)(VmSystem *);
と私は私が必要な次のようなエラーlvalue
を取得する関数ポインタを代入しようとしたとき、私は私がしかし、何をしたいとIDを割り当てることができています
void display(VmSystem * system)
{
printf("test");
}
単項として&
オペランド
test_item test;
test.function = &display(system);
'()'が後に続く関数名は、関数を呼び出すことを意味します。 '()'のない関数名は、関数のアドレスを意味します。 – Gerhardh
私はあなたがここで何をしようとしているのか分かりませんが、 'display(system)'は 'display 'という関数からの戻り値のアドレスをあなたに提供するようにCに求めています。ただし、この値はプロセッサレジスタに返されます。それは全くアドレスを持っていません。だから 'test.function =&display(system);'という行は意味をなさない。 –
@Johnny S書き込みtest.function = **********表示; –