목록c (50)
Nagie's DevStory
우선 파일의 형식과 상관없이 공용으로 사용되는 함수들부터 알아보도록 하자. //파일 형식과 상관없이 공용으로 사용하는 함수 FILE *fopen(const char* filename,const char* mode); int fclose(FILE* stream); int feof(FILE* stream); int fscanf(FILE* s, const char* format, args...); int fprintf(FILE* s,const char* format, args...); 1. fopen fopen 함수는 C에서 파일을 열 때 사용되며 파일 포인터를 반환한다. fopen은 파일 이름과 열기 모드를 인수로 받으며 열기 모드는 파일을 어떤 식으로 읽을 건지 지정하는데 사용된다. 아래는 파일을 쓰기 모..
C에서 파일 입출력은 데이터를 파일에 저장하고 파일에서 데이터를 읽어오는 데 사용되는 중요한 개념이다. 파일의 저장 방식은 텍스트 파일과 바이너리(이진)파일로 나뉘며 각각의 차이점은 다음과 같다. 텍스트 파일 바이너리(이진) 파일 ASCII 코드 값으로 저장됨 사용자가 정의한 데이터 타입으로 저장됨 일반적인 텍스트 편집기에서 편집가능 일반적인 텍스트 편집기에서 정상적으로 편집이 불가능 0 과 1로 이루어진 바이너리(이진) 데이터가 저장되는 건 동일 저장과 읽는 방식의 차이점이 있긴 하지만 근본적으로 0,1로 이뤄진 바이너리(이진) 데이터가 저장되는건 동일하며 아래는 파일 입출력에 사용되는 함수를 각각 목적에 맞게 나열해놨다. //파일 형식과 상관없이 공용으로 사용하는 함수 FILE *fopen(const..
인라인 함수는 C 프로그래밍에서 함수 호출의 오버헤드를 줄이면서 코드 실행 속도를 높이기 위해 만들어진 기능이다. 인라인 함수는 #define의 전처리 지시문처럼 함수 호출 지점에 함수의 코드가 직접 삽입되어 실행되기 때문에 함수 호출 비용에 따른 오버헤드를 줄일 수 있으며 사용 방법은 함수를 정의할 때 앞에 inline 키워드를 붙여주면 된다. inline int add(int a, int b) { //인라인 함수 정의 return a + b; } 다만 인라인 함수는 사용자가 컴파일러에 강제하는 것이 아닌 요청하는 것이라 컴파일러가 무조건 인라인 함수로 바꿔주지는 않으며 간단한 함수에서 사용하는 걸 추천한다. 그리고 인라인 함수는 호출되는 지점에 코드가 삽입되는 형태로 작동하기 때문에 코드의 크기가 늘..
외부 파일에서 전역변수를 사용하는 방법은 간단하다. extern 키워드를 사용해 컴파일러에 이런 전역변수가 있다는 걸 알려주면 정상적으로 사용할 수 있다. 아래는 extern 키워드를 사용해 전역변수에 접근하는 예시이다. //main.c의 내용 #include #include "Func.h" int g_nVar1 = 10; int g_nVar2 = 20; int main (){ printf_s("%d",add()); } //Func.h의 내용 #pragma once extern int g_nVar1; extern int g_nVar2; inline int add(){ return g_nVar1 + g_nVar2; }
분할 컴파일이란 여러 변수와 함수를 기능별로 구분해 여러 개의 파일로 나누는 걸 의미한다. *.c 파일에다 모든 내용을 정의하고 관리 한다면 유지보수 측면에서 좋지 않으며 따라서 기능들을 외부 파일로 분리해 필요에 따라 main()에서 호출해 사용하는 방법이 파일 분할 또는 분할 컴파일이다. 파일을 분할 할 때는 헤더파일과 소스 파일로 나뉘게 되는데 헤더파일엔 함수의 원형만 기재한다 즉 임시 선언만 해 컴파일러에 이런 함수가 있다는 정도만 알려주는 용도로 사용한다. 물론 소스 코드를 헤더에 넣어도 상관없이 컴파일되고 작동하긴 하지만 소스 코드를 재사용한다는 목적이 희석되며 파일 분할을 하는 의미가 없어지기 때문에 반드시 헤더 파일에는 함수의 원형만 정의하길 바란다. 소스 파일엔 헤더파일에서 임시 선언한 ..