코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-10-28 15:39:26
컴파일의 사전적 정의는 다음과 같다.
우리가 컴파일을 실행할 때 완벽하게 코드를 작성했다면 문제가 없겠지만 사람이기 때문에 중간에 글자를 빼먹거나 철자를 틀리거나 알고리즘이 틀릴 확률이 매우 높다. 이렇게 코드에 오류가 있을 경우 컴퓨터는 작성된 코드를 제대로 실행할 수 없기 때문에 우리에게 코드에 오류가 있다고 알려주게 된다.
코드길이가 100줄 200줄 이럴 때는 쉽게 어디가 찾을 수 있지만 만약 코드 길이가 1~2만줄 이렇게 방대하다면 정말 백사장에서 머리카락을 찾는 기분이 든다.
다행히도 코드에 오류가 있다고 알려줄 때 어느 부분에서 오류가 있을지 컴퓨터가 예상해서 알려주기 때문에(예상이지만 맞을 확률이 상당히 높다.) 프로그래밍하는 사람 입장에서는 에러메시지를 보고 쉽게 어디가 틀렸는지 고칠 수 있다.(이런 프로그래밍을 하면서 에러가 있는 곳을 찾아 잘못된 점을 고치는 것을 디버깅이라 한다. 디버깅 작업은 상당한 난이도를 필요로 한다.)
이번 장에서는 스케치에서 많이 볼 수 있는 간단한 컴파일 에러를 알아보고 해결 방법을 알아보자.
변수를 선언할 때 변수 앞에 어떤 타입인지 적지 않았을 경우 볼 수 있는 메시지이다.
위 사진과 같은 경우에는 led = 8;이라고 선언했지만 led라는 변수가 어떤 종류인지 컴퓨터에게 알려주지 않았다.
8은 숫자(정수)이기 때문에 숫자를 가질 수 있는 변수를 선언할 때 쓰는 int나 float, double, char 정도를 led앞에 적어주어야 한다.
위 소스는 숫자 8은 핀번호를 나타내기 때문에 int가 적당하다.
해결 방법 : led = 8;을 int led = 8;로 변경
이번에는 변수는 제대로 선언했으나 입력된 값이 변수랑 어울리지 않을 때, 혹은 입력된 값은 정상이지만 변수의 선언이 어울리지 않을 때 생기는 오류이다.
위와 같은 오류는 상당히 자주 볼 수 있다. 변수와 입력하는 값이 틀릴 경우는 자주 겪기 때문에 위와 같은 문구를 본다면 오류메시지에서 알려주는 값을 살펴보는것이 좋다.
여기서는 int led = a; 이 부분에서 'a'가 제대로 선언이 되지 않았다고 오류메시지가 떴다. 이럴 때는 변수의 타입을 바꿔 주거나 a를 변수에 맞는 값으로 바꿔 주면 된다.
해결 방법 : int를 char로 바꾸거나 'a'를 숫자로 변경한다.
3-1 여는 괄호가 부족 할 경우
pinMode(led, OUTPUT);전에 여는 괄호를 없애서 생기는 오류이다.
첫번째 for문 다음에 여는 괄호를 없애서 생기는 오류이다. 두번째 for문이 적당하지 않다고 오류 메시지를 내보낸다.
두번째 for문의 여는 괄호를 없애서 생기는 오류이다.
세가지 모두 원인은 여는 괄호가 없기 때문에 오류가 생겼지만 메시지는 각각 다르다.
하지만 밑의 창을 보면 공통 적인 메시지가 있다.
'}' 괄호전에 무언가를 기대하는 메시지를 보낸다. 이 메시지가 떴다면 괄호가 맞는지 확인해 볼 필요가 있다.
3-2 닫는 괄호가 부족 할 경우
void setup()함수를 열고 닫는 괄호를 없애서 생기는 오류이다.
void loop()를 열고 닫는 괄호를 없애서 생기는 오류이다.
닫는 괄호도 마찬가지로 공통메시지가 존재한다.
'}'닫는 괄호를 기대하는 메시지를 보낸다. 이 메시지가 보인다면 닫는 괄호의 개수가 맞는지 확인해 볼 필요가 있다.
가장 많이 경험할 오류메시지가 아닐까 싶다. 프로그래밍에서는 한 줄이 끝났다는 표시를 ;(세미콜론)으로 표시하는데 이 세미콜론을 빼먹었을 때 생기는 오류이다.
메시지에서는 친절하게 어느 부분에서 놓쳤을 지 예상해서 알려준다.
해결 방법 : 세미콜론을 작성한다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!