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 뒤에 세미콜론 붙이는데 매크로 사용하는 구문에서 ; 붙일 거 예상하고 생략해줌