Cプログラムがコンパイルされない理由がわかりません。
エラーメッセージは次のとおりです。
$ gcc token_buffer.c -o token_buffer
token_buffer.c:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
最初の構造–トークンは多くの場所で使用されることを目的としているため、オプションの構造タグを使用します。2番目の構造体宣言は他の場所では再利用していないため、構造体タグを使用していませんが、代わりにbufferという名前の変数を定義しています。
そして、この構造体のメンバーの1つに値を割り当てようとすると、コンパイルが失敗します。
ヘルプ?
/*
* token_buffer.c
*/
#include <stdio.h>
#include <stdbool.h>
/* A token is a kind-value pair */
struct token {
char *kind;
double value;
};
/* A buffer for a token stream */
struct {
bool full;
struct token t;
} buffer;
buffer.full = false;
main()
{
struct token t;
t.kind = "PLUS";
t.value = 0;
printf("t.kind = %s, t.value = %.2f\n", t.kind, t.value);
}