2

一般的な円柱の上面の長軸と短軸を表す 4 つのベクトルの大きさを取り、一般的な円柱のタイプを決定する、この関数のようなマクロを定義しようとすると問題が発生します。EQUAL は、2 つの浮動小数点値が互いに「等しい」かどうかを確認するために既に定義されているマクロです。

3080 #define GET_TGC_TYPE(_type, _a, _b, _c, _d) { \
3081     if (EQUAL((_a), (_b)) && EQUAL((_c), (_d))) { \
3082         /* circular base and top */
3083         if (EQUAL((_a), (_c))) { \
3084             /* right circular cylinder */
3085             (_type) = RCC; \
3086         } else { \
3087             /* truncated right cone */
3088             (_type) = TRC; \
3089         } \
3090     } else { \
3091         /* elliptical base or top */
3092         if (EQUAL((_a), (_c)) && EQUAL((_b), (_d))) { \
3093             /* right elliptical cylinder */
3094             (_type) = REC; \
3095         } else { \
3096             /* truncated elliptical cone */
3097             (_type) = TEC; \
3098         } \
3099     }
3100 }

私が得ているエラーは

3083:9: error: expected identifier or ‘(’ before ‘if’
3086:11: error: expected identifier or ‘(’ before ‘else’
3090:5: error: expected identifier or ‘(’ before ‘}’ token
3090:7: error: expected identifier or ‘(’ before ‘else’
3100:1: error: expected identifier or ‘(’ before ‘}’ token

私は C マクロの経験があまりないので、明らかな何かが欠けている可能性は十分にあります。

4

2 に答える 2

4

コメントのある行には末尾\の が含まれていないため、マクロ定義は最初の行で停止します。

于 2012-06-08T18:20:43.077 に答える
1

コメント行にバックスラッシュがないようです。

于 2012-06-08T18:22:09.653 に答える