unreal 5기

250908 언리얼엔진 본캠프 25일차 파일3

parkjinnam 2025. 9. 8. 18:07

예제를 풀어보자

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)
{
    int Number = 0;
    FILE* InputText = fopen("input.txt", "r");

    fscanf(InputText, "%d", &Number);
    printf("%d", Number);

    fclose(InputText);
    InputText = NULL;

    return 0;
}

 

이 코드를 작성하고 프로젝트 폴더에 input.txt를 생성하여 아무 숫자를 적은 다음 실행해 보면 다음과 같이 나온다.

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)
{
    int Number1 = 0, Number2 = 0;
    FILE* InputText = fopen("input.txt", "r");
    FILE* OutputText = fopen("output.txt", "w");

    fscanf(InputText, "%d %d", &Number1, &Number2);
    fprintf(OutputText, "%d", Number1 + Number2);

    fclose(InputText);
    InputText = NULL;
    fclose(OutputText);
    OutputText = NULL;

    return 0;
}

 

해당 코드를 작성해주고 실행결과를 예측해 보자 앞에서 다뤘지만 'r'은 읽기 모드로서 해당 파일이 없으면 오류가 발생한다 그렇기에 input.txt를 프로젝트 폴더에 생성해 주고 숫자 2개를 스캔하도록 되어 있으니 내용은 숫자 2개를 적어보도록 하자 나는 10과 50을 적었다.

 

그러면  'w'모드의 특성으로 인해 프로젝트 폴더에 존재하지 않는 output.txt를 생성한 뒤 그 안에 두 숫자의 합이 적혀있을 것이다.

 

 

전처리기 지시자

 

전처리기(Preprocessor)는 우리가 작성한 .c파일을 가지고 전처리기가 아래와 같은 작업을 진행해 준다.

 

1. 주석을 날린다

 

2. 매크로가 확장된다.

 

3. include 되어 있는. h 헤더파일의 확장

 

위와 같은 작업을 통해 만들어진 파일이 트렌슬레이션 유닛이다. 트렌슬레이션 유닛 파일은 컴파일러가 들고 가서 다음 작업을 이어서 진행한다.

 

전처리기 지시자는 #이다. 전처리기 지시자가 붙은 전처리기 지시문은 다음과 같이 있다.

#include, #define, #ifndef#endif,...여태껏 예제 등을 통해서 코드를 작성하면서 흔하게 작성해 왔던 것들이다. 전처리기 지시문을 통해서는 매크로 문법을 통해서 텍스트를 대체할 수 있으며(#define과 같이 소스코드 상의 특정 텍스트를 대체) 다른 소스파일을 인클루드(#include)하거나 소스파일의 일부를 조건부로 컴파일(#if, #ifdef, #ifndef, #else, #elif, #endif)하거나 에러를 강제로 발생(#error)시키는 것이 가능하다.

 

#define {식별자} {값}

전처리기가 {식별자}를 보면 모두 {값}으로 대체한다. 우리가 π를 보면 3.141592... 등을 떠올리듯 값을 식별자로 대체하는 것이 가능하다.

#define TRUE (1)

// TRUE는 1이란 값을 대체한다.

 

#define {식별자} 형식처럼 값을 넣지 않으면 전처리기 지시어 정의 구문으로서 조건부 컴파일에서 식별자 정의 유무에 따라 분기한다.

 

#undef {식별자}

 

기존에 정의되어 있던 식별자를 없앤다. 정의되어 있는 식별자가 없다면 무시된다.

 

C 표준에 미리 정의되어 있는 #define 구문들

 

1. __FILE__ : 현재 파일명을 문자열로 표시

 

2. __LINE__ : 현재 소스코드의 줄 번호를 정수형으로 표시

 

위 두 개의 매크로는 오류 출력 시 자주 사용

 

3. __STDC_VERSION__ : 현재 컴파이렝 사용 중인 C표준(C95 표준부터 지원)