본문 바로가기
KNOU/요약정리

[C 프로그래밍] 자료형과 선행처리기

by bottlesun 2023. 5. 10.
728x90

자료형

  • 프로그램에서 사용하는 자료의 형태
  • 상수 와 변수로 구분
  • 프로그램에서 자료(Data) 처리를 위해서 생성과 저장 처리과정이 필요

상수(canstant)

항상 고정된 값을 갖는 자료(데이터)

값이 한번 정해지면 프로그램 도중 그 값을 변경 할 수 없다.

변수(variable)

변할 수 있는 값

프로그램 에서의 변수 → 실행 도중 값이 변할 수 있는 값이 저장되는 기억 공간을 의미

ex) i = 10; → i 라는 변수라는 기억 공간에 값이 계속 변할 수 있다.

기억 공간을 확보하기 위해 사전에 선언을 해야 한다.

선행처리기(Preprocessor)

컴파일에 앞서 프로그램 선두에 선언된 지시자들을 미리 처리하는 역할

종류 의미
#include 다른 파일에 있는 코드를 현재 파일에서 사용할 수 있도록 함
#define 상수나 매크로를 정의하며, 코드에서 직접적으로 사용 가능
#ifdef 조건부 컴파일 지시자로, 해당 조건이 참일 때 코드를 컴파일함
#ifndef 조건부 컴파일 지시자로, 해당 조건이 거짓일 때 코드를 컴파일함
#undef #define으로 정의한 상수나 매크로를 해제함
#if 조건부 컴파일 지시자로, 해당 조건이 참일 때 코드를 컴파일함
#elif #if나 #ifdef의 조건이 거짓일 때, 새로운 조건을 검사하고 그 조건이 참일 때 코드를 컴파일함
#else #if나 #ifdef의 조건이 거짓일 때, 코드를 컴파일함
#endif 조건부 컴파일 지시자로, 조건부 컴파일 블록의 끝을 나타냄

선행처리기의 주의사항

  • 시작은 #이 붙는다.
  • 세미콜론을 붙이지 않는다.
  • 한줄에 하나의 선행처리기만 사용 할 수 있다.
  • 소스의 헤더 부분에 위치시켜야 한다.

#include

헤더 파일을 소스와 함께 읽어서 컴파일 하기 위해 사용

  • C프로그램에서 표준 함수등을 사용 하려면 stdio.h 를 inlude 시켜야 함
/*
#include <디렉토리 or 파일명>
*/
#include <stdio.h>

#define

매크로를 정의할때 사용

매크로(macro)란?

  • 프로그램 작성 시에 명령이나 수식 또는 상수 값이 자주 사용될 때 이를 대표하는 이름을 붙여 사용한다.
#include <stdio.h>

#define PI 3.141592 // PI를 3.141592로 정의

int main() {
    int r = 5;
    float circle_area;
    circle_area = PI * r * r; // 원의 넓이 계산
    printf("반지름이 %d인 원의 넓이는 %f입니다.\\\\n", r, circle_area);
    return 0;
}

위 코드에서 #define PI 3.141592는 PI라는 매크로를 3.141592라는 값으로 정의한 것이다.

이렇게 매크로로 상수 값 등을 정의해 두면 이후 코드에서 매크로를 사용해 값을 대입하거나 연산할 수 있다.

조건부 컴파일(#if #else #elif #endif)

조건에 따라 프로그램을 컴파일 한다.

최적의 코드로 프로그램을 작성 할 수 있다. (시스템 성능 향상)

#include <stdio.h>

#define DEBUG 1

int main() {
    int a = 10, b = 20, c;
    #if DEBUG
    printf("a = %d\\\\n", a);
    printf("b = %d\\\\n", b);
    #endif

    c = a + b;
    printf("c = %d\\\\n", c);
    return 0;
}

위 코드에서 #if DEBUG는 DEBUG 매크로가 1로 정의되어 있을 때에만 실행되는 코드 블록을 의미한다.

이를 통해 디버깅에 유용한 문장들을 포함시키거나, 컴파일 시스템에 따라 다른 코드를 실행할 수 있다.

728x90

댓글