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 |