함수의 선언만 있고 정의 부분은 삭제한 위와 같은 코드가 있습니다.
이 코드를 컴파일 하면 오류가 발생하지 않는데, 그 이유는 컴파일러는 함수의 정의를 의심하지 않기 때문입니다.
컴파일러는 함수가 어떤 매개 변수와 반환형을 가지는지 파악하여 문법이 올바른지 판단하고, 함수의 정의는 어딘가에 있다고 생각하고 넘어갑니다.
하지만 이 프로그램은 컴파일은 가능하지만 실행할 수는 없습니다.
그 이유는 소스코드 파일을 실행 가능한 소프트웨어로 만드는 빌드 과정에서 함수를 호출했을 경우 이동할 함수의 정의 부분을 찾을 수 없기 때문입니다.
그래서 함수의 정의 부분을 넣어줘야 하는데 어디든 존재하기만 하면 됩니다.
그것이 DLL 파일이든, LIB 파일이든 상관없이 어디든 그 함수의 정의가 존재한다면 그 곳으로 이동할 수 있습니다.
<참고 자료>
'프로그래밍 언어 개념 > C' 카테고리의 다른 글
구조체 패딩(struct padding) (1) | 2023.12.08 |
---|---|
[C언어] Strcpy 함수 주의할 점 (0) | 2022.10.04 |
[C언어] static 변수 (0) | 2021.12.26 |
[C언어] 지역변수와 전역변수 (0) | 2021.12.23 |