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はタグ名
とやってみたのですが、エラーでした。
これはどうしてできないのですか?
お願いします。