# if 와 # endif 구문 의미와 예시
나슬
질문 제목 :# if 와 # endif 구문 의미
질문 요약 :# if, # endif 의 구문의미와 사용법
질문 내용 :
c언어 작성중에
# if와 # endif 가 나오는데 어떤 의미이고 어떻게 사용하면 되나요?
예를들어
if (ab ||
(cd) ||
#ifAAA
( e != 0) ||
#endif
(f == 0))
return (g);
#if AAA
a = 100;
#endif
와 같은 구문이 있을때 어떻게 해석을 하면 되는지 알려주시면 감사하겠습니다.
-
모해 2023-05-21
전역변수나 static변수보다 먼저 실행됩니다.
선행처리는 컴파일보다 1단계 앞선 단계이거든요.
선행처리가 진행되고 나면 결과물로 똑같은 소스파일(선행처리가 다 적용된)이 나오게 되는데
그 소스파일로 컴파일을 하는 것 입니다.
그때 전역변수나 static 변수가 데이터 메모리에 올라가겠지요?
int main()
{
\tstatic int num=10;
#if num==10
\tprintf(\%d\\n\ -
남자 2023-05-21
컴파일 과정보다 먼저 실행된다면 static변수와 함수와 비슷한 의미인가요?
static변수와 함수가 생성될 때 #도 같이 처리된다고 보면 되나요? -
바나나맛사탕 2023-05-21
# 부분은 선행처리 부분으로 컴파일 과정보다 먼저실행되는 과정입니다~
-
우울녀 2023-05-21
이제 이해가 되었네요. 답변 감사드립니다~!
-
핫다홍 2023-05-21
AAA가 변수 아니면 define되어서 값이 지정된 상태일 겁니다.
AAA가 선언이 안되었는데 컴파일이 될 수가 없어요...
if구문은 참, 거짓 모두 컴파일을 한 후에 조건에 해당하는 구문만 실행시키지만
#if구문은 참일 때만 컴파일을 합니다.
즉, 컴파일을 참, 거짓 모두 하느냐 않하느냐의 차이입니다. -
연하얀 2023-05-21
그러면 단순 if구문이랑 #if구문이랑 어떤 차이가 있나요?
그리고 #if AAA에서 AAA가 조건을 만족하는지 안하는지 어떻게 결정을 할수있나요? -
맑다 2023-05-21
#if 가 참이면 #endif 까지의 구문을 컴파일합니다.
하지만 #if가 거짓이면 #endif 까지의 구문을 컴파일 하지 않습니다.