FW 심화 과정/[2] STM32심화실습
0720 형식지정자(typedef) / 매크로 ~84
천숭이
2022. 7. 21. 21:43
선언
typedef struct student
{
char name[16];
int age;
}student_t;
정의 -> 메모리 할당
student_t st0;
# 전처리기
- 컴파일러 시작 전 처리되는 작업
- '#' 지시어로 시작
- #define, #if, #ifdef, #undef, #pragma, #include
- 매크로전처리기 유의
#define SQUARE(x*x) 라고 정의했을때,
SQUARE(2+3)은 25가 아닌 11로 출력.
그 이유는 2+2*3+3 으로 처리되기 때문.
정상적인 작동을 위해서는 #define SQUARE((x)*(x)) 라고 정의해야 함.
# 조건 컴파일
#if(1)
...
# else
...
#endif
- 조건 컴파일 예시
#define DEBUG_1
#if dfined(DEBUG_0)
...
#elif defined(DEBUG_1) && !defined(DEBUG_2)
...실행되는 구역...
#else
...
#endif
# Header File 작성
- 정의되어 있지 않을때만 새로 정의해라
-> 오류 방지 위해 아래 코드들을 같이 쓰는게 좋다
#ifndef _A_H_
#define _A_H_
#endif
# 다중 구문 매크로 작성법
#define PRINT(x) do { \
printf("======\n");\
printf("%s\n", x);\
printf("======\n");\
} while(0)
- while 뒤에 세미콜론 붙이는데 매크로 사용하는 구문에서 ; 붙일 거 예상하고 생략해줌