아마 매크로 범위의 개념이 없다는 것을 알고 있지만, 나에게 다음과 같은 출력을 이해 도와주세요 - 매크로 기능에 로컬 것을 제안하는 것 같다범위
#include<stdio.h>
#include<stdlib.h>
#define A 100
void fun();
int main()
{
fun();
printf("%d\n",A);
system("pause");
return 0;
}
void fun()
{
#undef A
}
내게는 컴파일러 오류가 있어야하지만 프로그램의 출력은 100입니다. 이유를 설명해주세요.
함수에서 전 처리기 명령을 실행할 수 없습니다. 컴파일 된 코드에서 제거됩니다.그것이 전 처리기라고 불리는 이유입니다. 프로그램을 컴파일하기 전에 실행되고 제거됩니다. fun()에서 숫자 100을 정의하지 않습니다. – Zyerah
@ user1131435 : 왜 대답으로 게시하지 않습니까? 나는 그것이 다른 답변 앞에 게시 된 방법을 볼 수 있습니다. 대답으로 게시하고 그것을 upvote 것입니다. –
사실 @ user1131435 댓글이 올바르지 않습니다. 사전 처리기 지시문을 함수에 넣을 수 있으며 일반적인 방법으로 텍스트에 영향을 미치며 함수에서 "실행"하지 않습니다. – dmckee