티스토리 뷰
본 포스팅은 렉토피아(http://www.lectopia.com) 의 대학 IT 특강 중
정혜경의 C언어 & 기초 자료구조 강의를 수강하는 수강생이 올린 질문글을 토대로 작성하였습니다.
질문.
>수업시간에 알려주신 call by pointer기법으로 3가지 변수 받는 프로그램인데
>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #pragma warning(disable : 4996) #include<stdio.h> void input(char*, int*, double*); void output(char, int, double); int main() { char name[20]; int age = 0; double height = 0; input(name, &age, &height); output(name[20], age, height); return 0; } void input(char *cp, int *ip, double*dp) { printf("이름 입력 : "); scanf("%s", cp); printf("나이 입력 : "); scanf("%d", ip); printf("신장 입력 : "); scanf("%lf", dp); return; } void output(char name[20], int age, double height) { printf("%s는 %d세이고 %lfcm이다.\n", name[20], age, height); return; } | cs |
>
>컴파일 에러는 없는데 링크 에러가 발생했는데
>뭐때문에 발생한건지 못잡겠습니다.
>
>에러 코드가
>error LNK1120 : 1개의 확인할 수 없는 외부참조입니다.
>error LNK2019 : "void_cdecl output(char, int, double)"(?output@@YAXDHN) 외부 기호(참조 위치 : _main 함수)에서 학인하지 못했습니다.
>
>이렇게 나오는데 어떤 부분이 잘못된걸까요??
답변.
링크 에러는 보통 함수가 많거나 적을때 발생해요~~
자주 발생하는 에러는 그 종류를 기억해서 해결하면 이후에도 같은 에러가 발생했을때 훨씬 수월하게 진행 할 수 있을거에요 ~~
함수가 많거나 적을때 발생한다고 했는데 이게 무슨말이냐면 코드에서 한번볼게요
함수 선언부에서 void output(char, int, double) 이라고 선언을 했죠??
근데 정의부를 보면 void output(char name[20], int age, double height) 이렇게 되어있어요
여기서 문제 name[20]은 char형일까요 char*일까요 ㅎㅎㅎ
에러메세지를 자세히 들여다 보면 뭐라는지는 몰라도 output이라는 이름이 들어간걸로 유추해 봤을때 output 함수와 관련이 있다는걸 유추해 볼 수 있죠?? 그럼 output함수의 선언정의가 틀렸나 유심히 들여다 보면 되요. 링크에러는 이런식으로 해결할 수 있어요~~
이 문제를 해결함에서 끝내지 말고 앞으로 같은 에러가 나왔을때도 위와같은 방식으로 잡아 보아요~~
'개발노트 > 질문과 답변' 카테고리의 다른 글
Q&A : 함수의 반환값 (0) | 2015.07.02 |
---|---|
Q&A : Call by pointer 란? (0) | 2015.07.02 |
Q&A : 함수의 반환값과 함수 선언부 (0) | 2015.06.27 |
- Total
- Today
- Yesterday
- UML
- 데이터베이스
- 클라이언트
- 정렬
- C/C++
- 파일
- 티라노 시그널
- Sort
- 액터
- 악보
- 안드로이드
- 파이썬예제
- 파이썬
- 소켓
- 자료구조
- C
- 유즈케이스
- 스레드
- 쓰레드
- 터미널
- socket
- 리눅스
- C++
- 소켓 프로그래밍
- 클래스
- 디렉터리
- 프로세스
- 티그널
- MFC
- 라즈베리파이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |