본문 바로가기

컴퓨터/C

C module 모듈화

I. extern 키워드

1. module.c

  1 int i=10;
  2 static int j = 20; //static 키워드로 외부 접근을 방지한다.
  3
  4 int increase(int a);
  5
  6 int increase(int a) {
  7   return a++;
  8 }

2. main.c

  1 #include <stdio.h>
  2
  3 extern int i;
  4 //extern int j; 에러! 외부 접근이 허용되지 않았다.
  5 extern int increase(int a);
  6
  7 int main() {
  8   printf("%d\n", increase(i));
  9   return 0;
 10 }

II. header

  위의 main.c 코드에서 3~5부분은 경우에 따라 엄청나게 길어질 수 있다. 이 부분을 헤더 파일로 분리한다.

1. module.c

  1 int i=10;
  2
  3 int increase(int a);
  4
  5 int increase(int a) {
  6   return a++;
  7 }

2. module.h

  1 extern int i;
  2 extern int increase(int a);

3. main.c

  1 #include <stdio.h>
  2 #include "./module.h"
  3
  4 int main() {
  5   printf("%d\n", increase(i));
  6   return 0;
  7 }

III. 조건부 컴파일

1) #if, #elif, #else, #endif

#include <stdio.h>

#define COND 2

int main(void) {
  #if COND == 1
    puts("매크로 상수 COND가 선언되어 있으며 그 값은 1입니다.");
  #elif COND == 2
    puts("매크로 상수 COND가 선언되어 있으며 그 값은 2입니다.");
  #elif COND == 3
    puts("매크로 상수 COND가 선언되어 있으며 그 값은 3입니다.");
  #endif

  return 0;
}

결과: 매크로 상수 COND가 선언되어 있으며, 그 값은 2입니다.

2) #ifdef, #elif, #else, #endif

#include <stdio.h>

#define PI 3.14 // 이 부분을 주석처리하면 결과가 달라진다.

int main(void)
{
  #ifdef PI
    printf("매크로 상수 PI가 선언되어 있으며 그 값은 %.2f입니다.\n", PI);
  #else
    puts("매크로 상수 PI가 선언되어 있지 않습니다.");
  #endif
  
  return 0;
}

결과: 매크로 상수 PI가 선언되어 있으며 그 값은 3.14입니다.

3) #ifndef, #elif, #else, #endif

#include <stdio.h> 

//#define PI 3.14 이 부분의 주석처리를 없애면 결과가 달라진다.

int main(void) {
  #ifndef PI
    puts("매크로 상수 PI가 선언되어 있지 않습니다.");
  #else
    printf("매크로 상수 PI가 선언되어 있으며 그 값은 %.2f입니다.\n", PI);
  #endif

  return 0;
}

결과: 매크로 상수 PI가 선언되어 있지 않습니다.

'컴퓨터 > C' 카테고리의 다른 글

C socket()  (0) 2022.11.03
C soket 소켓 생성 과정  (0) 2022.11.03
C Macro 매크로  (0) 2022.11.01
C 실행 파일의 생성 순서  (0) 2022.11.01
C dynamic Allocation 메모리 동적 할당  (0) 2022.11.01