컴퓨터활용/티맥스

error #2029: expected an expression

멜번초이 2008. 5. 19. 13:21
반응형

개발자가 요청해 오기를 컴파일 과정에서 다음과 같은 오류를 만났는데 원인을 모르겠으니 찾아달라고 한다.
원인을 찾다가 다음과 같은 결론을 얻었다.


"SVBE0011I2_bak.c", line 1686: error #2029: expected an expression
         msvbe_fnc_wrs_c(msvbe_g0010_in.srlev_data.fnc_wrs_c, SVBE_SVFNDBSCI_INFO->be_fnd_tpc);
                                                              ^

"SVBE0011I2_bak.c", line 1686: error #2032: expression must have arithmetic  type
         msvbe_fnc_wrs_c(msvbe_g0010_in.srlev_data.fnc_wrs_c, SVBE_SVFNDBSCI_INFO->be_fnd_tpc);

                                                              ^



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
   1049             mftpd_svfndbsci_in mftpd_svfndbsci_in;
   1050             mftpd_svfndbsci_out mftpd_svfndbsci_out;
   1051             mftpd_svfndbast_in mftpd_svfndbast_in;
                 

와 같이 지역변수 명을 타입명과 동일하게 선언하지 않아야 한다.
매크로 속의 타입과 변수명이 충돌되기 때문이다.


보통의 경우는 위와 같이 타입명과 동일한 변수명을 선언하지 않는데 이분이 약간 특이한 코딩을 하고 있는 것이다.

비슷한 케이스의 오류로서

사용자 삽입 이미지
이런 경우 컴파일 하면 아래와 같은 warning 이 나오게 된다.

사용자 삽입 이미지

 

반응형