일반적인 실린더의 윗면의 주축과 단축을 나타내는 4 개의 벡터 크기를 취하는이 함수와 비슷한 매크로를 정의하는 데 문제가 있습니다. 일반적으로 실린더 형. EQUAL 두 개의 부동 소수점 값이 서로 "동일한"인 경우, 이미 정의 된 매크로 참조한다.오류 : 예상 식별자 또는 앞에 '('앞에, 매크로 정의
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 매크로에 대한 많은 경험이 있으므로 전적으로 가능합니다. mi 뭔가 명백한 ssing.
매크로가 'EQUAL'입니까? – qwertz
이런 매크로를 유지해야만했던 사람으로서, 나는이 전체 구현을 버리고 적절한 C 함수로 다시 작성 해줄 것을 정중하게 요청합니다. 정적 인라인으로 만들고 헤더 파일에 고정시킬 수 있으며, 현재 구현의 잠재적 인 매크로 부작용이 없어도 정확히 동일하게 작동해야합니다. –
@ AndrewCottrell : 나는 그것에 반대하지 않습니다. 현재 매크로에서 발생할 수있는 몇 가지 문제를 설명 할 수 있습니까? – cdk