변수와 함수의 선언 범위 조경민 98/97/30
-------------------------------------

전역변수 선언 위치


만일 전역변수 a를 다음에 선언 하면 어떻게 될까?

#include <stdio.h>

void p()
{
      printf("%d",a);
}

int a  = 1;

void main()
{
      p();
}

이렇게 하면

error : undeclear a

라는 a가 선언 안되었다고 나온다. 이유는 함수 p()

보다 전역 int a가 뒤에 선언 되어 있기 때문이다.

따라서 이를 극복하기해서 int a를 함수 p()보다 앞에

선언해도 되고 컴파일러에게 int a가 선언되어 있다고

extern 키워드를 써서 알려 주어도 된다.

#include <stdio.h>

extern a;

void p()
{
      printf("%d",a);
}

int a  = 1;

void main()
{
      p();
}

이렇게 하면 된다.


함수의 선언 위치

다음처럼 하면 어떻게 될까?

#include <stdio.h>

int  a = 1;

void main()
{
      p();
}

void p()
{
      printf("%d",a);
}

error : undeclared a function

이라고 함수가 선언되어 있지 않다고 나온다. 이유는

main() 함수 뒤에 선언되어 있기 때문이다 이럴때는

main()함수 전에 미리 p()함수를 선언하는 것으로 할수

있으며 함수의 원형 (Prototype)을 미리 적어 주어서

컴파일러에게 함수가 어딘가 있을꺼라고 이야기 해줄수

있다.


#include <stdio.h>

int  a = 1;
void p();

void main()
{
      p();
}

void p()
{
      printf("%d",a);
}


이렇게 하면 뒨다.

'KB > C/C++' 카테고리의 다른 글

C&ASM  (0) 2004.03.19
복사생성자  (0) 2004.03.19
\f 와 \r의 차이점 double과 float의 차이점  (0) 2004.03.19
volatile  (0) 2004.03.19
몇가지 코드 최적화  (0) 2004.03.19

+ Recent posts