Q & A

#define은 함수 안에서 사용해도 되나요?

네, 함수 안에서 사용해도 됩니다.

int main()
{
#define DEBUG

#ifdef DEBUG
    printf("Debug\n");
#endif

    return 0;
}

특정 상황에서 컴파일이 안 되게 설정할 수 있나요?

#error를 사용하면 컴파일 에러를 발생시킬 수 있습니다. 보통 조건부 컴파일과 함께 사용하여 특정 환경에서 컴파일이 되지 않게 설정합니다. 다음은 _WINDOWS가 정의되어 있을 때 컴파일을 하면 컴파일 에러를 발생시키고 "Windows는 지원하지 않습니다."를 출력합니다.

#ifdef _WINDOWS
#error "Windows는 지원하지 않습니다."
#endif

매크로에 인수는 몇 개까지 지정할 수 있나요?

C 언어 표준에는 127개로 정의되어 있으며 Visual Studio는 127개까지, GCC는 65,535개까지 지정할 수 있습니다.

#include 안에 #include는 몇 단계까지 사용할 수 있나요?

C 언어 표준에는 15단계로 정의되어 있으며 Visual Studio는 15단계까지, GCC는 200단계까지 사용할 수 있습니다.