소프트웨어/C

[에러 리뷰] error: expected ‘,’ or ‘...’ before ‘this’

개발자_이훈규 2015. 5. 7. 12:05

c++에서 컴파일 할때 혹시

 error: expected ‘,’ or ‘...’ before ‘this’

이런 에러가 나온다면,


그리고 c언어와 cpp의 파일으로 작업하고 있다면 의심해볼 만 하다.






이 문제는 c언어와 cpp의 예약어의 차이에서 오는 것이다.

즉, c언어로 만들어서 이상 없는 소스를 cpp로 컴파일 시키면 에러가 나올 수 있는 것이다.

예제는 아래와 같다.


struct Something {

    char *value;

    char class[20];    // Bad code!!

};


위 코드는 c언어로는 이상이 없는 코드지만 cpp에서는 에러를 내뿝는 코드이다.





즉 이런 경우에는 해결방법은 크게 3가지 정도이다.


1. 소스의 컴파일을 c언어로 한다.


2. cpp의 예약어를 사용하지 않는다.


3. 아래와 같은 형식으로 변경한다.

#ifdef __cplusplus

    extern "C" {

        void aFunc(int);

    }

#else

    void aFunc(int this);

#endif



참고 : http://stackoverflow.com/questions/25646581/c-program-using-a-c-library-headers-is-recognizing-this-as-a-keyword-extern