回答編集履歴

1

具体的な説明の追加

2017/06/10 17:34

投稿

chankane
chankane

スコア139

test CHANGED
@@ -1,3 +1,19 @@
1
1
  struct point rot(point p);
2
2
 
3
3
  ここの時点でstruct point ってなんですか?というエラーだとおもいます
4
+
5
+
6
+
7
+ すみません、流石にもう少し具体的に書きますね。以下追記です
8
+
9
+
10
+
11
+ まずtypedefとは既に定義されている型に,別の新しい名前をつけて定義することができるキーワードだということはご存知ですね?
12
+
13
+ では2パターンの例を考えてみます。まずはタグ名を省略しなかった場合です。この例でいくと、struct pointという型に新しくpointと言う名前をつけています。この場合抜粋した一行では、戻り値の型と引数の型は同じになります。どういうことかというと、戻り値のほうは古い名前で、引数のほうは新しい名前で書いておられます。ただただ名前が違うだけなので正常に動作します。
14
+
15
+ もう1パターンのタグ名を省略した場合を考えてみます。この場合、そもそもstruct pointという名前の型が定義されていないのでエラーとなります。つまり、structをとっぱらえばうまく動作すると思います
16
+
17
+
18
+
19
+ ただ、新しくpointと名前を定義されたのなら、そちらで統一してください。もしくはtypedefを使わずstruct pointで統一してください。でないと今回のようにややこしくなります