2011년7월20일_C언어 저장클래스(Storage class) 중 함수외부에 static저장클래스의 변수선언과 extern (접근속성(제한)과 전역변수 공개)



시간 없어어엉어어어엉어~4a46b55d020016m1
문서정리해 업로드하는게 왜 이렇게 힘든지...ㅠㅠ




참조(Reference)







DSCN3683 DSCN3684




image

   1:  all: main.h test.h main.o test.o
   2:      gcc -o main main.c test.c
   3:   
   4:  clean:
   5:      ls -al
   6:      rm main
   7:      rm *.o
   8:      ls -al
   9:   
  10:  run: all
  11:      ls -al
  12:      ./main




   1:  // main.h
   2:  #ifndef __MAIN_H__
   3:  #define __MAIN_H__
   4:  #include <stdio.h>
   5:  #include <stdlib.h>
   6:  #endif    //__MAIN_H__


   1:  // main.c
   2:  #include "main.h"
   3:  #include "test.h"
   4:   
   5:  extern int iB;
   6:  extern int errno;
   7:  static int iA;
   8:  //int iB = 7;    //test()에서 사용하는 변수니 main()에서 건들지 말 것.
   9:   
  10:  int main()
  11:  {
  12:      iA = 3;
  13:   
  14:      printf("\x1b[45mmain::start------\x1b[0m\n");
  15:      printf("main::iA = %d\n", iA);
  16:      printf("main::iB = %d\n", iB);
  17:      test(10);
  18:      printf("main::errno = %d\n", errno);
  19:      printf("\x1b[45mmain::end--------\x1b[0m\n");
  20:      
  21:      return 0;
  22:  }
  23:   



 

   1:  // test.h
   2:  #ifndef __TEST_H__
   3:  #define __TEST_H__
   4:  extern int iB;        //iB를 컴파일 해줘라. 링크할 때 알 수 있다.
   5:  void test(int);
   6:  #endif    //__TEST_H__


   1:  // test.c
   2:  #include "test.h"
   3:   
   4:  int iA;
   5:  int iB = 3;
   6:   
   7:  void test(int iNum)
   8:  {
   9:      printf("\x1b[33mtest::start----------\x1b[0m\n");
  10:      printf("test::iA = %d\n", iA);
  11:      printf("test::iB = %d\n", iB);
  12:      printf("test::iNum = %d\n", iNum);
  13:      printf("\x1b[33mtest::end------------\x1b[0m\n");
  14:   
  15:      return ;
  16:  }



image


변수가 공유되고 있는지 아니면 독립인지 구분할 것.