본문 바로가기
ATmega 2560/Ghost의 ATmega C main.c:19: error: expected ';', ',' or ')' before numeric constant

main.c:19: error: expected ';', ',' or ')' before numeric constant

by dark ghost 2012. 6. 1.
728x90
반응형

main.c:19: error: expected ';', ',' or ')' before numeric constant.

: main.c:19: error: expected ';', ',' or ')' before numeric constant 이 에러에 대해서 올린다. C 프로그램을 짜다 보면 에러도 발생 하고 한다. 그런데 이 에러는 ATmega 를 하다가 발생한 에러였다.

 

1. make 라는 명령어로 컴파일을 실행 했는데 에러 메시지가 보인다. 에러는 2개가 나있다. 그럼 문제의 라인을 한번 봐야 할 것이다.

 

 2. 19번째 라인을 보면 그냥 봤을때는 이상이 없어 보인다. 그럼 69번째 라인을 한번 봐야 할 것이다.

 

3. 69번째 라인 어~라~~ 역시 이상이 없어 보인다. 그럼 문제가 뭘까? 문제는 다름 아닌 ucData 에 있다. 물론 main.c 만 본다면 이상은 없어 보인다. 그럼 컴파일시 떳던 에러 메시지가 무슨 에러인지 알아야 한다. 어떤 문제든 원인을 알게 되면 해결 할 수 있을수도 있기 때문이다. 그럼 에러 메시지가 뭐였는지 부터 확인 해보자.  main.c:19: error: expected ';', ',' or ')' before numeric constant 라는 에러 였다. 분명 19번째에 에러가 있다는데 main.c 에는 문제가 없었다. 하지만 이 에러는 분명 19번째에서 뭔가에 의해 에러가 발생 했는데 main.c:19: error: expected ';', ',' or ')' before numeric constant 이 에러는 한번 사용 되었던 뭔가가 다시 한번더 사용 되므로서 충돌이 나면서 에러가 난것이다. 그러므로 이제는 include 로 포함시켰던 헤더 파일을 열어 보자.

 

 4. 128io.h 파일을 열었다. 128io.h 에도 보통으로 아무 이상이 없어 보인다. 하지만 이 헤더에 없어야 되는게 하나 있다. 그건 19번째와 69번째에서 에러가 났던 원인. 바로 ucData 다. 이 ucData 가 전처리를 하면서 한번 사용 됐는데 그걸 함수 인자로 다시 쓰게 되니 충돌이 난 것이다. 그럼 문제가 맞는지 확인 하기 위해 #define ucData 0 이라는 코드를 삭제 해 보겠다.

 

5. #define ucData 0 이라는 코드를 삭제 한것을 확인 할 수 있다. 그리고 다시 컴파일을 해보자.

 

 6. make 로 컴파일을 실행 했는데 어~ 라~라~~ 에러 메시지가 안뜨고 깔꼼하게 잘 되는 것을 볼수 있다. 이 결과로 에러가 뜨는 원인을 제대로 찾았다는 것을 알 수있다. 그럼 앞으로는 main.c:19: error: expected 라는 에러 메시지가 보인다면 에러 뜨는 라인을 찾아서 어디에서 다시 사용 되었는지 확인 하고 그 부분을 삭제 시키거나 수정 하면 된다. 이 에러는 일반 적으로 잘 나는 에러인지는 모르겠으나 아무튼 앞으로는 스트레스 받지 말고 프로그램을 짤 수 있는 그날까지... 홧팅!!!  

 

 

728x90
반응형

댓글