이 번에도 C++에서 오류가 발생해서 그 원인을
알아보고자 이렇게 포스팅을 하게
되었네요... 좋은 정보로 포스팅을
해야 되는데 이제는 거의 안되는 일로 포스팅을 하고
있네요... ㅠㅠ 하지만 그래도 코드가
적을때 문제들을 다 알아놓으면
코드가 길어져도 오류를
찾을 수 있겠다는 긍정적인 생각에
해보는 것이니 이해해주세요...^^
그럼 이 번에는 '어떤 오류로 포스팅을 하게
되었을까? 궁금하시나요?' 궁금하셨으면
좋겠네요.. 그럼 원인은 바로
Code 속에서 func 함수의 타입이
main 함수의 타입과 일치하지 않아서
생기는 에러 때문에 포스팅을
하게 되었답니다...
물론 다른 프로그래밍 언어를 접해신 분들은
타입 불일치 에러가 왜 생기는지 아실수도
있으시겠지만 프로그램밍 언어를
처음으로 C++를 접하신다면
모르실 수도 있겠네요...
main.cpp:5:16: note: initializing argument 1 of ‘void func(int*)’
라는 에러는 함수가 값을 반환하지 않는 void 타입의 함수
에서 int*타입의 변수를 반환하려고 하니
나는 에러 네요...
그래서 void func(int *y) 함수를
int func(int *y)로 int형 함수로 변경하였네요...
그런데 타입을 변경했는데도 이상하게
다시 오류 메시지가 뜨네요.. ㅠㅠ
원인이 뭘까요? ㅠㅠ
main.cpp:13:15: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
Error 메시지를 보니깐 엥~~ int*에서 int로 변경 해주라네요...
그러고 보니 int func(int *y) 함수 에서 int *y가 있네요...
그럼 int *y를 그냥 int y로 변경해 볼게요..
int func(int *y) 함수 에서 *을 빼니 제대로
실행이 되네요... 원인이 뭐였을 까요?
"아시겠나요?" 원인은 바로 return y에 있기도 하네요..
즉 func 함수는 int형(정수형 타입)
이고 return 값도 int 정수형이네요...
그래서 main 함수에서도 int 형으로 받게 되있는데
int func(int *y) 함수 였을때 int *y는 int 형이
아니라 int 포인터형이네요... 그래서
main함수에서 인자값을 받지
못해서 일어났던 에러였네요...
그래서 전체적으로는 func 함수가 값을 반환하지 않는
void 형이었는데가가 int *y 형이어서 인자값으로도
타입이 일치하지 않아서 일어났던
에러였네요...
끝까지 긴글 읽으신다고 수고 많으셨네요...
감사합니다...
by. Ghost
댓글