protortpe
페이지 정보
작성일 19-12-05 09:58본문
prototype:원형 , 시제품
c++에서는 먼저 작성되어 있는 코드부터 차례로 읽기 시작한다. 그래서 작성된 함수라해도 컴파일 시점에서 없는 함수이면 에러가 발생한다
이것을 막기 위해 나온 개념이 prototype이다.
예를 들어보겠다.
-다음과 같은 함수를 실행할 때에는 main을 읽어 들이는데 drawSquare(); 함수가 컴파일 순서상으로 읽히지가 않아서 오류를 낸다.
#include <iostream>
int main() {
drawSquare(); //현재 정의되지 않은 함수를 먼저 불러오게 되어 에러발생
}
// 걷기
void walk(int distance) {
printf("%dcm를 걸었습니다.\n", distance);
}
//돌기
void rotate(int angle) {
printf("%d도 회전했습니다\n", angle);
}
void drawSquare() {
for (int i = 1; i < 4; i++) {
walk(10);
rotate(90);
}
}
=================================================================================================================================
다음은 프로토 타입을 쓴 예제이다.
//프로토 타입은 변수명이 없어도 되며 인자를 받는 타입은 사용할 함수에 맞게 정의해줘야 한다.
#include <iostream>
//다음과 같이 프로토 타입을 정의해주면 앞으로 컴파일 도중 순서에 따른 에러가 발생하지 않는다
void walk(int distance);
void rotate(int);
void drawSquare();
int main() {
drawSquare();
}
// 걷기
void walk(int distance) {
printf("%dcm를 걸었습니다.\n", distance);
}
//돌기
void rotate(int angle) {
printf("%d도 회전했습니다\n", angle);
}
void drawSquare() {
for (int i = 1; i < 4; i++) {
walk(10);
rotate(90);
}
}