선언
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 뒤에 세미콜론 붙이는데 매크로 사용하는 구문에서 ; 붙일 거 예상하고 생략해줌
'FW 심화 과정 > [2] STM32심화실습' 카테고리의 다른 글
0722 브레드 보드의 스위치, LED를 GPIO로 제어하기 (0) | 2022.07.25 |
---|---|
0721 외부변수참조 / .h / CPU구조 / reg와argument / 슈도명령어 ~234 (0) | 2022.07.22 |
0720 포인터,배열의 동작구조 / 함수포인터 / 구조체 / union ~176 (0) | 2022.07.22 |
0719 스택 / keil메모리값변화 / 포인터 ~64 (0) | 2022.07.19 |
0718 16진수용량계산 / ROM,RAM / Keil (0) | 2022.07.18 |
0715 웹 서버 기반 하드웨어 제어 (0) | 2022.07.17 |