C - 함수, extern, static 함수

markyang92·2024년 3월 11일
0

C

목록 보기
3/10
post-thumbnail

C의 함수

  • 모두 전역(global) 함수
  • 기본적으로 어디에서나 호출 가능
    • 물론 제한할 수 있는 키워드가 있다.
  • 함수 오버로딩 없다.

선언

  • 위 코드에서 에러가 발생한다.
    • ANSI C(C89)에서 함수 정의가 등장하기 전에 함수를 호출하면 컴파일러가 다음과 같이 가정한다.
      • 반환형 int
      • 그 매개변수는 아무거나 올 수 있음
      • 따라서, 나중에 컴파일러가 int가 아닌 다른 것을 반환하는 함수를 찾으면 컴파일 오류

전방 선언의 작동원리

  • 컴파일 단계에서는 mainfoo()구멍을 둔다.
  • 링크 단계에서, foo()함수 구현이 어디에 있다고 구멍을 메꿔준다.

함수 매개변수

  • 함수 선언의 매개변수 목록에 있는 것은 그 목록 안에서 접근가능

extern 함수, static 함수

  • extern 변수의 내용은 링크 참고
    • extern 함수는 따라서 의미 없음

  • static 함수는 static 변수와 마찬가지로, 내 파일에서만 함수를 사용할 것
    • 다른 파일에서 함수 전방 선언해도 못씀
  • static을 붙이지 않으면, 당연히 빌드 성공

  • static 함수해버리면 다른 파일에서는 링킹에러
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글