
전처리기는 컴파일을 하기전 일련의 작업을 수행하는것으로 main함수 외부에 작성함.
#define 및 #include만 알아도 된다.

매크로 상수와 함수의 구분점은 뒤에 괄호가 붙어있나 아닌가로 결정된다.

초보들이 보기에는 오른쪽이 좀 더 잘 짜여진 코드라고 생각되겠지만
변수를 선언하지않는다면 나중에 유지보수를 할때 수정할 부분이 생긴다면 일일이 바꿔야 하기때문에
#define으로 변수선언을 해주는게 좋다.
헤더파일을 직접 만들고 예를들어 class1.h라고 쓴 경우 #include <stdio.h> 아래부분에 #include "class1.h"라고 쓴다면
직접 쓴 헤더파일이 적용 된 모습이다.

선언 부분같은 경우 이미 만들어져있는 경우도 있지만 그런 경우는 printf()나 scanf()같은 함수이며
직접 변수선언을 하는것은 num, num1 등 자신이 직접 수나 문자를 저장하기 위해 만드는 변수다.

컴파일을 할지 말지 결정하는 부분이다.

##은 두개의 토큰을 결합시킨다.

#include <stdio.h>
int main(void)
{
printf("__LINE__ : %d\n", __LINE__); //현재 줄 위치
printf("__DATE__ : %s\n", __DATE__); //현재 날짜
printf("__TIME__ : %s\n", __TIME__); //현재 시간
printf("__TIMESTAMP__ : %s\n", __TIMESTAMP__); //현재 날짜와 시간
printf("__FILE__ : %s\n", __FILE__); //파일 위치
return 0;
}
__를 앞과 뒤에 쓴다면 위에 식대로 현재의 무언가를 도출해낸다.
#include <stdio.h>
#define SQUARE1(a) ( a * a )
#define SQUARE2(a) ( (a) * (a) )
#define TOTAL 10
int main(void)
{
int x = 3;
printf("%d %d\n", SQUARE1(2), SQUARE2(2)); //4 4 // 4 4가 나온 이유는 square1이 2라고했을때 a * a라고 써져서 4로 나온것.
printf("%d %d\n", SQUARE1(x), SQUARE2(x)); //9 9 // x=3이라서 x * x라서 9가 나온것.
printf("%d %d\n", SQUARE1(x + 2), SQUARE2(x + 2)); //11 25
//x+2*x+2 (x+2)*(x+2)
printf("Total==%d", TOTAL); //10이 나온 이유는 위에 #define으로 10을 매크로로 저장해놨기 때문.
return 0;
}


이 두가지는 꼭 알아야된다.
'C' 카테고리의 다른 글
| 7주차 예습과제 (0) | 2024.04.13 |
|---|---|
| 6주차 실습과제 1 (0) | 2024.04.08 |
| 6주차 예습과제 (0) | 2024.04.06 |
| 5주차 실습문제 2 (0) | 2024.04.01 |
| 5주차 실습문제 1 (0) | 2024.04.01 |