반응형
#if
if - else문과 비슷한 구조를 가진다.
다만 끝에 #endif 닫아주는 지시어가 존재한다.
또한 조건문에 사용되는 소괄호와 동작 내용 부분의 중괄호가 존재하지 않는다.
#include <stdio.h>
#define MODE 1
#if MODE == 1
char FILE_NAME[20] = "input.txt";
#elif MODE == 2
char FILE_NAME[20] = "sample.txt";
#else
char FILE_NAME[20] = "sample_input.txt";
#endif
int main() {
freopen(FILE_NAME, "r", stdin);
}
Q) if문과 같이 조건에 따른 분기처리를 하는데 굳이 #if가 존재하는 이유는?
A) 조건에 부합하지 않는 경우(false)인 경우 컴파일 자체가 되지 않기에 성능(크기, 시간)을 높일 수 있다.
즉, #if는 조건에 따라 소스 코드를 실제 컴파일하거나 하지 않는 용도로 전처리기 사용 목적과 부합된다.
A) 예시 코드에서는 #if를 통해 읽는 파일을 변경하였는데,
물론 if문으로도 구현가능하지만 비즈니스 로직 처리하는 부분과는 다르게 표시하는 것에도 의미가 있다.
컴파일되지 않는 영역을 음영처리 되기 때문에 가독성도 좋다.
※ 이러한 전처리기 지시어에는
#if / #ifdef / #ifndef 등 여러가지가 존재한다.
Reference
반응형
'프로그래밍 언어 > C 언어' 카테고리의 다른 글
[C/C++] const 키워드 (1) | 2024.10.27 |
---|---|
[C/C++] 열거형 타입 enum 이란? (3) | 2024.06.06 |
[C/C++] #ifdef, #if defined() 비교 및 활용 (0) | 2022.09.01 |
[C 전처리기] #error 활용 예제 (0) | 2022.08.11 |
[C/C++] memmove() 함수 사용과 예제 (0) | 2021.11.28 |
댓글