:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/10/18 13:05
extern 키워드는, 컴파일러에게 다른 c 파일에 선언된 전역변수를 이 c 파일을 컴파일할 때에도 가져다 쓰겠다...(설명이 좀 이상하지만;;)라는 이야기입니다. 따라서 함수 내부가 아닌 func.c 함수 위에 보면 static 으로 전역변수 선언하신 부분에 extern int number 가 들어가야 하구요.
extern number; 만 하신 경우 컴파일러는 이 변수가 어떤 형식인지 알 길이 없으므로, extern [타입] [변수명] 으로 써주시면 되겠습니다.
09/10/18 13:19
정신놓은너구리 님 //
소스파일은 책에 있는 그대로 배껴서 적은건데.. extern number; 만 하면 다른 c파일에 선언된 전역변수의 형식을 그대로 따르지 않나요?? (그런 원리가 아닌가요 ;;;) 함수 내부에서 extern 을 쓰면.. 이 c파일 내부가 아닌 함수 내에서만 사용가능한건가요? 으음..ㅜ_ㅜ
09/10/18 13:19
옛날에 아무것도 안 붙여놓으면 기본 int형이었기 때문에 또 가능할지도 모르겠네요. 질문하신건 scope 룰에 의한 겁니다. printAnswer에서 쓰고 싶으면 printAnswer에서 접근할 수 있도록 해야하죠. setNumber안에서 쓰겠다고 한 걸 printAnswer에서는 쓸 수 없어요.
09/10/18 13:30
kcm1700 님 //
아, 역시 그렇게 되는건가요?? 책에 extern의 범위는 정의된 파일 내 라고 되있길래.. 정리하면.. extern을 전역변수를 선언하는 에 사용하면 해당 파일에는 어디든지 쓸 수 있고.. extern을 함수 내부에서 사용하면 그 함수에서만 사용할 수 있다는 거죠?? 또 어디서 extern [변수]; 를 사용하든지 [변수]는 항상 전역변수 이고요?
09/10/18 15:03
extern과는 별 상관 없는 scope 문제인데요.
어찌보면 좀 당연하다 싶은 내용이라서 설명하기가 어렵네요. 내에 변수를 정의, 선언하셨으면 그 안에서만 유효합니다. (이게 잘 요약한 건지는 약간 불안하긴 합니다만...) extern도 안에서만 유효하니까 밖에서는 알 수가 없다는 게 요점입니다. 안이 아니라 파일 첫머리에 두시면 파일 전체 내에서 유효해질 겁니다.
|