실제 컴파일 전에 미리 처리되는 문장이다.
- 기존의 방대한 소스를 건드리지 않은 상태에서 부분적인 컴파일 수행
- 소스의 시작부분에 위치하며, #으로 시작
- #include, #define, #ifedf, #undef 등..
소스코드에 사용할 숫자나 문자열, 함수의 이름이 너무 길거나 복잡할 때 한 눈에 파악하도록 쉬운 기호로 표현한 것.
#define [기호] [숫자 또는 문자열 또는 함수]
#include<stdio.h>
// 상수를 PI로 정의
#define PI 3.1415926535
// 문자열을 STR로 정의
#define STR "원의 면적을 계산하였습니다.\n"
// 함수를 END_MSG로 정의
#define END_MSG printf("프로그램이 종료되었습니다.")
void main(){
printf("반지름이 10인 원의 면적은 ==> %10.5f\n",10*10*PI);
printf(STR);
END_MSG;
}
- 특별한 기능을 수행하도록 프로그래밍 언어에서 미리 정의한 것
- 변수나 함수 이름에 사용할 수 없다.
- #define과 비슷한 기능을 수행한다.
- const로 변수를 선언하면 해당변수는 변수로서의 역할을 하는 것이 아니라 상수 역할을 한다.
const 변수형 변수_이름 = 변숫값;
const int a = 100; //a를 200으로 고정
int b;
b = a + 200; // asms 100이므로 b는 300이 됨
a = 200; // a는 더이상 변수가 아니라 고정된 값으로만 사용해야 하므로 잘못된 문법이다.
처음 설정된 값을 초기화하지 않고 계속 유지하게 한다.
static 변수형 변수_이름 = 변숫값;
#include<stdio.h>
void myfunc();
void main(){
myfunc();
myfunc();
}
void myfunc(){
static int a = 0;
a = a + 100;
printf("a의 값 ==> %d\n",a);
}
다른 소스 파일에 선언된 전역 변수를 현재의 소스 파일에 가져와서 사용하고 싶을 때 사용한다.
extern 변수형 변수_이름;