私のCプログラムがコンパイルされない理由を理解できません。Cでの構造体メンバー演算子の使用
エラーメッセージがある:
$ gcc token_buffer.c -o token_buffer
token_buffer.c:22: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
第1の構造 - トークンは、多くの場所で使用するためのもので、私は任意の構造のタグを使用することです。 2番目の構造体の宣言私は構造体タグを使用していないので、代わりにという名前の変数を定義します。
この構造体のメンバーの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);
}
感謝を行うC. 2つの異なるものです!今、私は「譲渡」と「初期化」を混同していると思います。 –
@Gruffalo C99では、[指定イニシャライザ](http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage% 2Fref%2Fdesignators.htm)。 'buffer = {.full = false};'を 'buffer'の宣言に加えると、それもうまくいくはずです。 – dasblinkenlight
これは私が欲しかったものです! 'token'メンバは後で割り当てられるので、私は本当に心配していませんが、' full'を初期化したいと思います。もう一度ありがとう! –