C言語は初心者で、参考書を見ながら勉強中です。WindowsのVistaを使っています。コンパイラはBorland C++です。
参考書を見ていたら、構造体について分からなかったので質問します。
/* マクロによって構造体に名前を与える(エラー) */ #define complex struct {double re, im; } void main() { complex a, b; comples x, y; a = b; // 正しい x = b; // 正しくない } このcomplexはstruct {double re, im; }に置換されますよね。そうすると、 complex a, b; complex x, y; は、 struct {double re, im;}a, b; struct {double re, im;}x, y; となりますよね。そこで、a = bは代入できて、x = bは代入できません。 参考書では、データの構造が同じであれば、同一の型とみなす<構造等価性>ではなく、型に与えられた名前が 同じでなければ、同一の型とみなされない<名称等価性>とありました。なんとなく理解はできました。 構造体の型名は<struct 構造体タグ名>ですよね。つまり、構造体のタグ名が必要なのですか? そしたら、 #define complex struct test{double re, im;} ←testはタグ名 とやってみたのですが、エラーでした。 これはどうしてできないのですか? お願いします。