C언어. #pragma 알아보기

최대 1 분 소요

🌟 #pragma

#pragma도 마찬가지로 전처리기 명령이며, 컴파일 이전에 실행된다.

Micosoft Docs

위 사이트에 다양한 #pragma 사용법이 있지만 나는 두 개만 알아볼 예정!

🌟 #pragma once

#pragma once

int void Sum(a, b);
int void Sub(a, b);
...

따로 헤더 파일을 만들 때, 헤더 파일을 생성하고 나면 #pragma once가 이미 쓰여 있는 것을 알 수 있다. #pragma once는 **해당 헤더를 한 번만 ** 적용한다는 뜻이다. 메인 코드에 프로그래머가 제작한 헤더를 두 번 이상 씌우는 실수를 해도, #pragma once 덕분에 오류가 나지 않을 것이다!

🌟 #pragme pack()

#include <stdio.h>

#pragma pack(1)
struct Student
{
    char name[32];
    int number;
    int age;
};
#pragma pack(pop)

#pragma pack(1)은 구조체의 정렬을 명령하며, 1 바이트 단위로 정렬하라고 지시하고 있다. 2를 넣으면 2 바이트, 4를 넣으면 4 바이트로 정렬할 수 있다.

그리고 밑의 #pragma pack(pop)는 정렬 설정을 초기화, 기본 값으로 돌리는 명령어다.

☝ 잠깐! 왜 1 바이트로 정렬하지?

C언어에서 바이트는 가장 작은 단위고, 구조체를 1 바이트 단위로 정렬하면 남은 공간 없이 메모리에 올라갈 수 있다! 공간 효율!

댓글남기기