AI(Artificial intelligence)/C,C++ Language

#if vs. #ifdef

prden 2023. 1. 11. 23:28

1. #if는 if와 다르게 조건에 따라 소스코드를 삽입하거나 삭제하기 위해 사용되는 지시자이다. 

// #if는 #endif로 닫아줘야 한다. 

#include <stdio.h>
int main()
{
    if(0)
    { // 일반 if조건은 괄호로 범위 지정
    	printf("실행되지는 않지만, 컴파일은됨 \n");
    }
#if 0
	printf("컴파일 자체가 안되 \n");
#endif
	return 0;
}

2. #if는 0이 아닐 경우에 실행된다.

#include<studio.h>
#define NUM -3
int main(void)
{
#if NUM
	printf("if: NUM is %d\n", NUM);
#else
	printf("else: NUM is %d\n", NUM);
#endif
}
// if: NUM is -3

3. #if 와 #ifdef 두 지시어의 차이

#include <stdio.h>
#define HELLO 0
int main()
{
#ifdef HELLO
	printf("HELLO is defined \n");
#endif
//#####################################

#if HELLO
	printf("HELLO is True\n");
#else
	printf("HELLO is False\n");
#endif
	return 0;
}

#ifdef는 '만약 ~가 정의 되어 있다면'을 의미해서 #ifdef HELLO라고 한다면 HELLO가 true, false여부가 중요한 게 아니고 HELLO가 사전에 정의 되었느냐 안 되었느냐를 확인하는 용도이다. 

 

4. #if 조건을 분기하는 #elif

조건을 계속 분기할 수 있는 else if와 같은 역할이 지사자에도 있는데 #elif가 그것이다. 

#include <stdio.h>
#define NUM 2

int main(void)
{
#if NUM ==1
	printf("NUM is 1\n");
#elif NUM ==2
    printf("NUM is 2\n");
#elif NUM ==3
    printf("NUM is 3\n");
#else
	printf("NUM is %d\n", NUM);
#endif
	return 0;
}

 

'AI(Artificial intelligence) > C,C++ Language' 카테고리의 다른 글

#1. C 언어 포인터  (0) 2023.01.10
#0. C언어 변수 선언 및 자료형  (0) 2023.01.10
# 2. C언어 자주 쓰는 함수  (0) 2023.01.10
C 프로그램 실행과정  (0) 2023.01.08