예제 1번
#include<stdio.h>
void func(int i, int j);
main()
{
int a=3, b=12;
func(a, b);
printf("%d, %d\n", a, b);
}
void func(i, j)
int i, j;
{
i*=3;
j/=3;
printf("%d, %d\n", i, j);
}
이대로 DEV C++ 에서 컴파일 시키면
행 열 메시지
9 11 [Error] variable of field 'func' declared void
9 11 [Error] 'i' was not declared in this scope
9 14 [Error] 'j' was not declared in this scope
11 1 [Error] expected unqualified-id before '{' token
이렇게 나와서 출력 확인이 안되요
89 페이지 예제 2도 역시 예제 그대로 컴파일 했을때
행 열 메시지
2 5 [Error] expected constructor, destructor, or type conversion before '(' tocken
In function 'int main()':
6 14 [Error] 'func' was not declared in this scope
At global scope:
9 5 [Error] expected constructor, destructor, or type conversion before '(' tocken
11 1 [Error] expected unqualified-id before '{' token
이라고 나오고 컴파일이 안됩니다
그래서 비슷한 유형으로 101페이지 문제6(산기 18년 10월)를 컴파일 해보면 에러 없이 컴파일이 완료됩니다
그래서 좀 혼란이 오는데 책의 예제가 잘못된건지 아니면 DEV C++ 프로그램 상의 문제인지 그도 아니면 제 컴퓨터에서만 문제인건지 뭐가 뭔지 모르겠습니다
왜 에러가 나오는지 좀 알려주세요
안녕하세요 길벗수험서 운영팀입니다.
컴파일러 종류의 문제로 보입니다.
함수 선언 밖에서 변수를 선언하는 프로토타입 방식( 88, 89쪽의 예제1, 예제2)의 경우 이를 허용하지 않는 컴파일러들이 존재합니다.
(*프로토타입 : 사용자정의함수의 구체적인 내용없는 사전 선언)
위와 같은 사용자정의함수 선언 방식이 코드로 나오는 경우 혼동하지 않으실 정도만 알아두시면 되는 내용이며, 해당 코드를 직접 수행해보고 싶으시다면 visual studio community를 사용해보시기 바랍니다.
교재 내용 검수 시 코드 검수는 visual studio community 2019를 사용하였으므로 해당 프로그램을 사용하면 모든 코드의 정상적인 컴파일이 가능합니다.
예제1과 예제2가 정상적으로 빌드된 이미지를 첨부하니 확인해보시기 바랍니다.
행복한 하루되세요 :)
-
관리자2020-06-29 11:01:49
안녕하세요 길벗수험서 운영팀입니다.
컴파일러 종류의 문제로 보입니다.
함수 선언 밖에서 변수를 선언하는 프로토타입 방식( 88, 89쪽의 예제1, 예제2)의 경우 이를 허용하지 않는 컴파일러들이 존재합니다.
(*프로토타입 : 사용자정의함수의 구체적인 내용없는 사전 선언)
위와 같은 사용자정의함수 선언 방식이 코드로 나오는 경우 혼동하지 않으실 정도만 알아두시면 되는 내용이며, 해당 코드를 직접 수행해보고 싶으시다면 visual studio community를 사용해보시기 바랍니다.
교재 내용 검수 시 코드 검수는 visual studio community 2019를 사용하였으므로 해당 프로그램을 사용하면 모든 코드의 정상적인 컴파일이 가능합니다.
예제1과 예제2가 정상적으로 빌드된 이미지를 첨부하니 확인해보시기 바랍니다.
행복한 하루되세요 :)