코딩/아두이노

아두이노 코딩, error: expected unqualified-id before '{' token 디버깅하기

오앤원 2023. 12. 1. 09:12

 

code.make.create

 

아두이노코딩 error: expected unqualified-id before '{' token 

디버깅을 해보려고 해요.

 

 

코딩은 잘 만드는 것도 중요하지만

만들어진 코드를 잘 디버깅해서 오류를 찾아내는 과정

또한 매우 중요합니다.

 

프로그래머들이 하는 일의 반은 디버깅인 것 같아요.

 

아두이노 스케치에서 오류를 보고 어떻게 수정하는지 같이 정리해볼께요.

 

샘플로 가져온 코드를 컴파일 시켜볼께요.

 

 
잘 안보이죠?!
 
검정색 창에 붉은 글씨로 되어 있으니
캡처하니 잘 안보이네요.
 
현재  "expected unqualified-id before '{' token" 에러를 보여주고 있어요.
 
그럼 이 에러코드를 해석해야겠네요.
 
중괄호 {  전에 정해지지 않은 아이디( expected unqualified-id)가 있다고 알려주고 있어요.
 
이부분을 가서 잘 살펴봐야 하는데요.
우선 코드 정렬부터 해볼께요.
 
코드 정렬하기 전과 후
 
 

 

코드 정렬을 통해서

띄어쓰가기 정확히 되어있으면 코드가 눈에 더 잘 들어옵니다.

 

그래야 잘 오류를 잘 찾아낼 수 있겠죠

 

Ctrl+ t를 눌러서 정렬해주세요.

 

그럼 왼쪽 코드가 오른쪽 코드처럼 들여쓰기 되어서 표현이 됩니다.

 

이 상태에서 이제 크게 구역을 나눠서 먼저 보는거에요.

아두이노는 기본적으로 이런 형태를 가지고 있어요.

 

 

 

 

setup()과 loop() 함수 두개가 필수적으로 있고

그 함수는 중괄호로 열고 닫고 있어요.

 

그 속에 내가 원하는 코드가 들어가는거에요.

 

void setup()

{

코드가 들어가요.

}

 

void loop()

{

코드가 들어가요

}

 

void loop() {
코드가 들어가요.

}
}

 

이렇게 작성이 되었다면 이건 맞을까요? 틀렸을까요?

잘 모르겠으면 이렇게 만들고 컴파일 시켜보면 됩니다.

 

결과적으로 틀렸어요.

 

열림 중괄호가 하나면 닫힘도 하나여야 해요.

꼭 기억하세요.

 

자 그럼 작성된 코드로 가볼께요.

에러가 표시된 곳으로 가보니 { 중괄호 전에

#include가 있어요.

 

 
빨간색 라인이 보이시죠. 
이건 에러난 곳을 표시해주는 것이니
이 부분을 잘 살펴보면 되는데요.
 
조금전 우리가 배운것처럼
함수이름과 함께 중괄호의 열고 닫힘 이 있어야 하는데
 
#include가 있네요.
 
이건 설명한바가 없어요!
 
#include는 일반적으로 setup() 함수 위에
코드 젤 상단에 적어주는 것이 일반적이에요.
 
무엇을 선언한다는 뜻이기 때문에
사용하기전에 선언부터 해줘야한다는 것을 기억하세요.
 
해당 코드를 젤 위로 올려볼께요~
 
 
 

코드를 ㄹ위로 올려주니 어떤가요?

똑같은 코드가 있어요!

 

 

이렇게 정리를 해줘야 보이는 부분이죠.

 

#include끼리는 젤 처음 상단에 모아서 선언해줘야해요.

그럼 중복되는 것을 찾을 수 있어요.

 

중복코드를 삭제하고 다시 코드를 돌려볼께요.

 

예상한 부분이죠.

 

중괄호 이전에 #include를 지워줬으니 비워진 상태이잖아요.

 

 

이제는 코드 내용을 살펴봐야해요.

 

코드를 보니 핀의 모드 항목을 설정해주고 있어요.

INPUT으로 할지 OUTPUT으로 할지 디지털핀의 속성을 정하고 있는 것이기 때문에

이것은 setup() 함수 안에 있어야 합니다.

 

옮겨주세요.

 

그리고 중괄호는 지워주면 되겠죠.

 

또 컴파일을 해보면

 
중괄호가 또 있네요.
 
이것도 비워져 있어요.
코드의 의도를 알아야 합니다.
 
내용을 보면 2, 3, 4번 디지털 핀의 값이 1이 되면 
음을 연주하고 싶은 것 같아요.
 
이 영역은 계속 진행되어야 하니 loop() 함수에 들어가는게 맞을 것 같아요.
 
loop() {    *******  }
 
loop() 함수의 중괄호 안에 별표시 된 곳에 들어가야해요.
현재는 밖에 있기 때문에 문제가 되고 있습니다.
 
 
드디어 에러가 없는 코드를 만들었어요.
 
2,3,4가 버튼이라면
버튼이 눌릴때마다 다른 음을 연주하고 싶은 것 같고,
서보모터도 움직였으면 좋겠다는 의도로 만들어진 코드 같아요.
 
그렇게 동작이 되려면 더 수정해야 하는 코드입니다.
현재 코드론 그렇게 동작이 되지 않을꺼에요.
 
오늘은 오류를 잡는 내용이었기 때문에
이렇게 정리하도록 하겠습니다.
 
아두이노 스케치를 이용해서 컴파일 하면
오류가 나는 곳과 오류 메시지를 자세히 표현해주고 있어요.
 
 
그곳을 자세히 살펴보면
내가 어떤 실수를 했는지 알 수 있을 겁니다.
 
주로 많이 하는 실수가 중괄호 열고 닫힘이기 때문에
정렬을 해서 
내가 잘 열고 닫았는지 
갯수를 세어가면서 정리해보면 오류를 찾기 쉬워질꺼에요.
 
에러가 나는 코드와 수정된 코드를 공유할께요.
직접해보세요.
 
즐거운 코딩하세요.
 
code.make.create.
 
 
 
 
 

 

Error_code.zip
0.00MB
OK_code.zip
0.00MB