MinGW에서 f2c.h 빌드시 expected unqualified-id before ‘int’
MinGW 환경에서 f2c.h 파일의 위치에 따라 다음과 오류가 났다 안났다 하는 경우가 있습니다. 오류 로그를 보면 아래와 같습니다.
1 2 3 4 5 |
e:\libraries\mingw\include\stdlib.h:254:37: error: expected unqualified-id before 'int' _CRTIMP int __cdecl __MINGW_NOTHROW abs (int) __MINGW_ATTRIB_CONST; ^ e:\libraries\mingw\include\stdlib.h:254:37: error: expected ')' before 'int' e:\libraries\mingw\include\stdlib.h:254:37: error: expected ')' before 'int' |
eclipse에서는 Console을 열지 않는한 이러한 메시지는 볼 수 없고 error: 이후 메시지만 보여서 처음엔 좀 의아하였습니다. 원인은 f2c.h 에서 정의한 abs 매크로가 MinGW의 그것과 충돌을 일으킨 것입니다. 따라서 MinGW의 std*.h 를 넣다보면 stdlib.h과 충돌이 일으키게 되는 것입니다.
오류가 발생하는 파일을 찾아 f2c.h의 include 이후 정의된 매크로 abs를 해제시켜주는 것으로 해결할 수 있습니다.
1 2 |
#include <f2c.h> #undef abs |