블로그 이미지
하루, 글. 그림. 영상매체. 표현을 도와주는 기기들. 도전 중. 동화다아아
    동화다아아

    카테고리

    분류 전체보기 (176)
    잡담 (1)
    IT 기기-리뷰&뉴스 (7)
    리뷰 - 도서 (1)
    리뷰 - 영상 (0)
    리뷰 - 그림/음악 (1)
    내장형 하드웨어 (163)
    Total
    Today
    Yesterday

    - 분할 컴파일을 통해 static, extern에 대한 사용 확인

    main.c

    test.c

    #include"main.h"
    #include
    <errno.h>
    #include"test.h"

    static int iA = 3;
    extern int iB;

    int main()
    {
      printf(
    "main :: start!!------\n");
      test(
    10);

      printf(
    "errno :%d\n", errno);

      printf(
    "main :: iA : %d\n", iA);
      printf(
    "main :: iB : %d\n", iB);
      printf(
    "main :: end!!--------\n");

      
    return 0;
    }

    #include<stdio.h>
    #include"test.h"

    int iA;
    int iB=3;

    void test(int iNum)
    {
      printf(
    "test :: start!!------\n");
      printf(
    "test :: iNum = %d\n", iNum);
      
      printf(
    "test :: iA : %d\n", iA); 
      printf(
    "test :: iB : %d\n", iB);
      printf(
    "test :: end!!--------\n");
      
      
    return ;
    }

    main.h

    test.h

    #ifndef __MAIN_H__

    #define __MAIN_H__


    #include<stdio.h>
    #include<stdlib.h>



    #endif

    #ifndef __TEST_H__

    #define __TEST_H__

    extern int iB; // 전역변수 보통 함수 위에 적는다.

    void test(int);


    #endif


    ⇒ 출력 결과         

     

    ⇒ 출력 결과(cmd)

     

    - 분할 컴파일 과정

    ⇒ 1) gcc -c *.c (.o 파일 생성)

       2) gcc -o main *.o

    ⇒ gcc -o main *.c (위의 1, 2번 과정을 동시에)

    ⇒ cl *.c (cmd 창에서 컴파일)


    ⇒ static의 두가지 의미

     → 전역 변수처럼 취급된다.(지역 변수로 사용시)

     → 다음 파일에서 접근할 수 없는 전역 변수가 된다.(전역 변수로 사용시) - 접근속성



    ⇒ static 클래스와 extern 클래스는 auto 클래스나 register 클래스와는 달리 함수의 실행이 끝난 뒤에도 남아있는 변수이다.

    ⇒ static 클래스는 함수의 내부에서나나 외부에서 모두 선언될 수 있고 extern 클래스는 함수의 외부에서만 선언된다.

    ⇒ static 변수는 초기화를 하지 않아도 시스템에 의해서 자동적으로 0이나 NULL로 초기화 된다.


    Posted by 동화다아아
    , |

    최근에 달린 댓글

    최근에 받은 트랙백

    글 보관함