C에서의 통용범위

프로그래밍/Embedded 최적화 과정 2007/01/24 13:12 게으른 엔지니어
C를 공부하다보면 통용범위라는 것을 배우게 된다. 프로그래밍시에 사용되는 변수나 함수에 적용되는 것인데, global하게 적용되는 지, 아니면 local로 블록({와 } 사이)에만 알려 질지, 아니면 현재 있는 파일에만 알려 질지에 대한 내용이다. 즉 신경써야 할 것은 아래와 같은 것이다. 전체에 global 하게 알려 지려면 extern 이라는 keyword를 사용해야 한다. 함수명은 기본적으로 아무것도 붙이지 않아도 extern이 default로 붙은 상태라고 여기면 된다.

1. 함수  : label 밖에 없다.

2. 함수원형 : 함수 원형 선언에서 선언되는 변수명, 변수명이 없어도 상관없다.

3. 파일

4. 블록

==> 대부분 파일 단위와 블록 단위에 신경쓰면 된다.

 
아래 코드를 보면, i, a가 파일 단위와 블록 단위의 영향을 받는다. 이런 경우 가장 가까운 통용범위가 사용되므로 abc : 레이블 아래에 있는 블록 내부에서는 그 안에 정의된 i, x, a를 사용하고 블록의 바깥쪽에서는 파일 단위의 a와 main 함수 블록 안에 있는 i를 사용하게 된다.
 

[code type=c]#include <stdio.h>

int a;
int b;
int f(int xx, int yy, int zz);

int main(void)
{
  int i, k = sizeof(i);

  goto abc;

abc :
     {
        int i;
        int x;
        int a;
     }

  return 0;
}[/code]



크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/123

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/123

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/123

트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/trackback/123

트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/trackback/123

댓글을 달아 주세요

댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/123
댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/123
[로그인][오픈아이디란?]