반응형

C언어 C++ Programming 37

[C언어/C++]#pragma once 사용 목적, 예제로 쉽게 알아보기(이유,샾)

목차 [C언어/C++]#pragma once 사용 목적 #pragma once는 C++에서 헤더 파일의 중복 포함을 방지하는 데 사용되는 전처리기 지시문입니다. 결론적으로 헤더가 중복적으로 포함되었을 경우 C 프로그램이 Linking 작업 중에 오류를 일으키기 때문에 중복 되는 경우 알아서 중복을 제거해달라는 뜻입니다. 이를 사용하는 이유는 다음과 같이 설명할 수 있습니다: 1. 효율성: #pragma once를 사용하면 컴파일러가 헤더 파일을 한 번만 포함하도록 보장합니다. 따라서 이미 포함된 헤더 파일은 다시 처리하지 않아도 됩니다. 이는 빌드 시간을 단축시키고 컴파일 속도를 향상시킵니다. 2. 가독성: #pragma once는 전통적인 include guards보다 간단하고 가독성이 좋습니다. In..

[C++]헤더파일 사용 예제로 이해하기(Header file)

목차 [C++]헤더파일 사용 목적 C언어에서 header file을 사용하는 목적은 아래와 같습니다. 1. 함수 선언과 재사용성 헤더 파일에 함수의 선언을 작성하면, 다른 소스 파일들에서 해당 함수를 사용할 수 있습니다. 함수의 선언은 함수의 이름, 매개변수, 반환형 등을 정의하는데, 함수의 내용은 정의되지 않으며 해당 함수가 어떻게 동작하는지에 대한 정보를 포함하지 않습니다. 이렇게 선언과 정의를 분리함으로써 함수를 여러 곳에서 재사용할 수 있습니다. 2. 모듈화와 가독성 코드를 기능 단위로 나누어 헤더 파일과 소스 파일로 구분하면, 코드가 모듈화됩니다. 이렇게 하면 프로그램의 특정 부분을 더 쉽게 이해하고 수정할 수 있습니다. 또한, 소스 파일의 크기가 커지는 것을 방지하며 코드의 가독성을 향상시킵니..

[C언어]정수자료형, 실수 자료형 크기, 범위 출력방법, 예제 코드로 크기 출력(Byte, Size, Range, printf)

목차 [C Programming]정수자료형, 실수 자료형 크기, 범위 출력방법 C언어에서 메모리를 효율적으로 사용하기 위해서는 변수의 크기를 적절히 조절할 필요가 있습니다. 다음 표는 정수, 실수에 따른 자료형의 크기(Bytes)와 사이즈 정보 및 출력 방법을 테이블로 정리하였습니다. 아래 테이블은 64비트 CPU 기준 값으로 int 값은 CPU에 따라 2 또는 4바이트가 될수 있습니다. 자료형 크기 (Byte) 범위 출력방법 char 1 -128 ~ 127 또는 0 ~ 255 char c = 'A'; printf("%c\n", c); int 4 -2,147,483,648 ~ 2,147,483,647 int num = 42; printf("%d\n", num); unsigned int 4 0 ~ 4,29..

[C언어] Visual Studio 디버깅에서 메모리 확인 예제(Debugging, Memory)

목차 [C Program] Visual Studio 디버깅에서 메모리 확인 예제 이번에는 아래 예제를 통해 Visual Studio 2022에서 변수의 메모리 주소를 확인하는 방법에 대해 알아보겠습니다. 예제 코드>> #include int main() { int num = 10; int* ptr = # printf("num의 주소: %p\n", &num); printf("ptr이 가리키는 주소: %p\n", ptr); return 0; } 결과>> num의 주소: 0000008881F6F9F4 ptr이 가리키는 주소: 0000008881F6F9F4 이 예제에서는 num이라는 정수 변수를 선언하고, ptr이라는 포인터 변수를 선언하여 num의 주소를 가리키도록 합니다. 그리고 printf 함수를 ..

[C언어]Visual Studio 지역 변수의 스택 값 확인(Local Variable, Stack Memory)

목차 [C Programming] Visual Studio 지역 변수의 스택 값 확인 예제 제가 현재 사용하고있는 IDE는 Visual Studio 2022 Community 버전입니다. 우선 예제로 사용할 코드는 아래와 같습니다. 예제 코드>> #include void sum(int a, int b) { int result = a + b; // 지역 변수 선언 및 초기화 printf("The sum of %d and %d is %d\n", a, b, result); printf("The address of result variable: %p\n", (void*)&result); // result 변수의 주소값 출력 } int main() { int x = 5; // 지역 변수 선언 및 초기화 int y..

[C언어] 라이브러리 만들기, 읽기(dll, lib, 외부 코드, library import, 추가)

목차 [C언어] 라이브러리 dll, lib 이란? DLL과 LIB는 동적 링크 라이브러리와 정적 링크 라이브러리(Library)를 나타내는 파일 형식입니다. 아래 예제와 함께 각각의 역할과 사용법을 설명하겠습니다. DLL (Dynamic Link Library) DLL은 동적 링크 라이브러리(Dynamic Link Library)의 약자입니다. DLL은 여러 프로그램에서 공유할 수 있는 함수, 데이터, 리소스 등의 코드를 포함하는 파일입니다. 다른 프로그램에서 이러한 기능을 필요로 할 때 DLL을 로드하여 사용할 수 있습니다. DLL은 실행 파일이 로드될 때 메모리에 동적으로 링크되어 사용됩니다. LIB (Static Library) LIB는 정적 링크 라이브러리(Static Library)의 약자입니다..

[C언어] 텍스트 파일 읽기, 예제 풀이로 이해하기(Text file, Read)

목차 [C Programming] 텍스트 파일 읽기 이번 포스트는 텍스트 파일을 읽는 방법에 대해 알아보도록 하겠습니다. 다음 포스트는 쓰기에 대해 알아보겠습니다. 코드를 이해하기 위해 간단한 예제를 통해 설명을 드리겠습니다. 예제 코드>> #define _CRT_SECURE_NO_WARNINGS #include #include int main(int argc, char* argv[]) { // 파일 인자가 전달되지 않았을 경우 경고 메시지 출력 if (argc < 2) { printf("파일을 입력해주세요.\n"); exit(EXIT_FAILURE); } // 첫 번째 인자로 전달된 파일 이름으로 파일 열기 FILE* file = fopen(argv[1], "r"); // 파일 열기에 실패했을 경우 경..

[C언어]지역변수와 스택메모리란? 예제로 이해하기(Local Variable, Stack)

목차 [C Programming]지역변수와 스택메모리 C 언어에서 "stack"은 프로그램 실행 중에 사용되는 메모리 영역 중 하나를 가리키는 용어입니다. Stack은 주로 함수 호출과 관련된 데이터를 저장하는 데 사용되며, 지역 변수, 함수의 매개변수, 반환 주소 등을 저장하는 데에도 활용됩니다. Stack은 RAM(Random Access Memory)에 속하는 메모리 영역입니다. RAM은 컴퓨터가 프로그램 및 데이터를 실시간으로 읽고 쓸 수 있는 주 메모리로, CPU가 직접 액세스할 수 있는 공간입니다. Stack은 RAM의 일부로, 주로 스택 포인터라고 불리는 특정 레지스터를 사용하여 메모리 상에서 스택의 현재 위치를 추적합니다. 반면, 캐시 메모리(cache memory)는 CPU와 주 메모리(..

CPU 레지스터와 캐시, 종류 및 동작 방법(Register, Cache)

목차 CPU 레지스터와 캐시, 종류 및 동작 방법 레지스터는 CPU 내부에 있는 빠른 기억장치로, 캐시 메모리와는 다른 개념입니다. 캐시 메모리는 주로 CPU와 주기억장치(RAM) 사이에서 데이터를 빠르게 전달하기 위한 임시 저장소입니다. 즉, 캐시 메모리는 주기억장치와 CPU 사이에 위치하여 데이터의 접근 속도를 향상시키는 역할을 합니다. 반면에 레지스터는 CPU 내부에 위치하여 가장 빠른 속도로 데이터를 처리합니다. 레지스터는 CPU 명령어의 실행, 데이터의 임시 저장 및 중간 계산 결과 등을 처리하는 데 사용됩니다. 레지스터는 CPU 내부에 직접 통합되어 있으며, CPU의 구조에 따라 개수와 크기가 다를 수 있습니다. 요약하면, 레지스터는 CPU 내부에 위치하고 매우 빠른 기억장치로 사용되며, 캐시..

반응형