error #2029: expected an expression
개발자가 요청해 오기를 컴파일 과정에서 다음과 같은 오류를 만났는데 원인을 모르겠으니 찾아달라고 한다.
원인을 찾다가 다음과 같은 결론을 얻었다.
"SVBE0011I2_bak.c", line 1686: error #2032: expression must have arithmetic type |
1050 라인의 mftpd_svfndbsci_out mftpd_svfndbsci_out; 의 이 변수 선언이 문제입니다.
SVBE_SVFNDBSCI_INFO 는 매크로로서 svbeCommBuff.h 속에
#define SVBE_SVFNDBSCI_INFO PFM_CBITEM_PTR( IDX_SVBE_SVFNDBSCI_INFO, mftpd_svfndbsci_out)
와 같이 선언 되어 있다.
이것이 프로그램 속에 풀려서 적용된 후 컴파일이 이루어 지는데
PFM_CBITEM_PTR( IDX_SVBE_SVFNDBSCI_INFO, mftpd_svfndbsci_out ) 의 mftpd_svfndbsci_out 부분이 위에서 변수로 선언해 놓아 버림으로써 타입으로 인식되지 않는 문제가 발생된다.
따라서 프로그램 속에서
// Variables Declaration |
와 같이 지역변수 명을 타입명과 동일하게 선언하지 않아야 한다.
매크로 속의 타입과 변수명이 충돌되기 때문이다.
보통의 경우는 위와 같이 타입명과 동일한 변수명을 선언하지 않는데 이분이 약간 특이한 코딩을 하고 있는 것이다.
비슷한 케이스의 오류로서