c 에서 extern 사용하는데 궁금한점이 있어서 글남깁니다.
글쓴이: kins575 / 작성시간: 화, 2016/04/05 - 3:02오후
function.c
#include<stdio.h> int print_num(int a, int b, int c) { printf("%d, %d, %d\n", a, b ,c); return 0; } void main() { print_num(1, 2, 3); }
main.c
extern print_num(int a, int b, int c); int main() { print_num(2,3,4); }
이런식으로 짜고
gcc -c *.c
gcc -o main *.o
이렇게 컴파일을 하는데
main이 두번있다고 컴파일 에러가 나네요
extern 으로 선언한 print_num(int a, int b, int c); 이 함수만 링크 되는것이 아니라
function.o 파일 자체가 링크 되는 것인가요?
Forums:
VS에서는 이렇게 사용합니다.
main() 위에 정의'해주셔야 합니다.
헤더가 파일로 분리된 경우에는 선언'해주셔야 합니다.
클래스도 같습니다.
그냥. 함수 위에 사용할 내용을 적으시는것이 포인트.
func.obj (func.cpp + func.h) + main.obj (main.cpp + func.h) ---> main.ilk ---> main.exe
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
음 보여주신 예제는 이해가 가는데요..
제가 궁금한 점은 extern 으로 main이 있는 다른 소스에서 함수를 불러와서 쓸 수 있는가 해써 질문드렸습니다 .ㅠㅠㅠ
링크할 때 main 함수가 두 개 있으면 안되죠...
안됩니다. -_-;
번거롭지만 function.c의 main함수가 컴파일되지 않게 할 방법을 찾아야 합니다. (매크로를 이용한 조건부 컴파일 등)
이런 식으로 말이죠.
댓글 달기