728x90

연재 완료/C Lang 이론 22

컴파일러 지시자 #pragma

C언어는 플랫폼 (윈도우나 안드로이드, 유닉스 등)에 상관없이 이식이 가능한 언어이지만, 언어를 이용해 고유의 실행 파일을 만들어내는 컴파일러는 플랫폼 종속적이다. 그러므로 컴파일러는 각각의 플랫폼의 고유 기능을 수행할 수 있도록 지원해야한다. 이때 사용하는 명령어가 #pragma이다. #pragma 는 #으로 시작하므로 전처리문으로 보이지만 "컴파일러 지시자"라고 따로 분류된다. #pragma 지시자의 기본 형식은 "#pragma "token""이다. 이 "token"의 종류는 컴파일러별로 다르며 플랫폼 종속적이므로 플랫폼 이식성을 유지하려면 조건부 컴파일 지시자와 함께 사용하는 것이 좋다. 컴파일러는 #pragma 다음의 토큰을 인식할 수 없을 경우 단순히 무시하고 컴파일을 계속 수행한다. VS의 #..

C문법 핵심 요약 (기본적인 용어)

기본적인 용어 변수/상수변수 : 특정한 자료형의 데이터를 담아놓은 메모리 공간 및 그 공간의 데이터를 사용할 수 있게 지정한 이름. 조금 쉽게 표현하면 언제든 값을 변경할 수 있는 상자. 상수 : 특정한 자료형의 데이터 그 자체. 혹은 그러한 값으로 정의해놓은 매크로. 예를 들면 '1'(정수형 상수), '0.5'(실수형 상수), 'a' (문자형 상수) 등 제어문 : 절차적 흐름을 제어할 수 있는 언어적 문법.조건문 : 특정 조건에 따라 실행되거나 실행되지 않도록 하는 문법. 반복문 : 특정 조건을 만족하는 동안 지정한 문장들이 반복 실행되게 하는 문법. 연산자 : 데이터에 작용해 새로운 값을 만들어내는 일종의 함수. 함수 : 특정한 명령들을 수행하도록 묶어놓은 것. 매개변수 : 필요에 따라 함수에 전달하..

C언어 이론 12. 파일처리(고수준의 파일 입출력 3. 블럭 단위 입출력 등)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. fread()/ fwrite() // 블럭 단위 파일 입출력 함수 ① 텍스트 형식 입출력 함수는 쉽고 유용하지만 부수적인 데이터 변환을 수행해야 하므로 효율적인 방법은 아니다. ② 또한 데이터 크기에서도 텍스트 파일은 이진 파일에 비해 큰편이다. ③ 이진 파일은 저장된 데이터를 확인하기는 어렵지만 속도와 크기면에서 훨씬 유리하다. ④ 원형 int fread (char* buffer, int size, int n, FILE* fp); int fwrite(char* buffer, int size, int n, FILE* fp); ⑤ fread(buffer,size,n,fp)는 파일 포인터 fp가..

C언어 이론 12. 파일처리(고수준의 파일 입출력 2. 텍스트 입출력함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. getc(), fgetc() / putc(), fputc() //한 문자를 입출력하는 함수 ① 원형 int getc(FILE* _Stream); int putc(int _Character, FILE* _Steream); int fgetc(FILE* _Stream); int fputc(int _Character, FILE* _Stream); ② getc(FP)는 지정한 스트림으로부터 한 문자를 읽어드리고, FP를 1증가시킨다. ③ getc(stdin)은 키보드로부터 한 문자를 읽어들이고, getc(FP)는 FP가 가리키는 파일 스트림으로부터 한 글자를 읽어들인다. ④ getc(FP)의 FP가 ..

C언어 이론 12. 파일처리 (고수준의 파일 입출력 1. 열고닫기)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 파일 열고 닫기 ① 파일에 데이터를 입출력하려면 제일 먼저 파일을 열어서 실행중인 프로그램과 파일간의 스트림을 연결해야한다. ② 파일을 열고 작업이 끝나면 파일을 닫아 스트림을 닫아주어야 작업이 파일에 저장된다. ③ 고수준의 입출력에서는 이 스트림을 FP(파일포인터)로 관리한다. ④ 고수준의 입출력에서 파일을 여는 함수는 fopen_s()이고 닫는 함수는 fclose()이다. ⑤ fopen()의 경우 파일을 열고 FP값을 반환값으로 주기 때문에 이를 저장하지 않는 실수를 할 수도 있었지만, fopen_s()의 경우 FP값을 첫번째 인자로 요구하기 때문에 그럴수가 없다. Ⅱ. fopen_s()..

C언어 이론 12. 파일처리 (기본, 스트림, 고수준의 파일 입출력 함수들)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 파일처리 기본 ① '파일'이란 '프로그램을 처리하는데 사용되는 입출력 장치에 적용되는 논리적 개념'이다. ② '파일'은 '디스크에 정보가 저장되는 단위'이며 고유의 이름을 가진다. ③ C언어는 파일 입출력 방식으로 고수준과 저수준 두가지를 지원한다. 둘의 차이점은 다음과 같다. 고수준 저수준 버퍼 사용 사용 메모리로 직접 읽어들임 입출력 대상 스트림 파일 핸들 속도 느리다. 빠르다. 문자 단위 입출력 가능 가능하지만 비효율적이다. 세밀한 조작 어렵다. 가능하다. 난이도 비교적 쉽다. 조금 어렵다. ④ 두 방식의 가장 큰 차이점은 버퍼의 사용 유무이며 나머지는 이에 따라 파생되는 특성들이다. ..

C언어 이론 11. 표준 라이브러리(기억장치 관리 함수 ~ 시간 관련 함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 기억장치 관리 함수 ① 힙(메모리의 동적 영역)에 공간을 할당하고 해제하는데 사용되는 함수. ② 이에 대한 내용은 동적할당에 대해 적은 부분에서 확인할 것. ③ 아래의 함수들은 stdilb.h나 malloc.c에 선언되어 있다. 함수명 형식 기능 calloc() void* calloc(unsinged n, unsigned size) size 바이트의 공간을 n개 할당하고 시작 지점의 포인터를 반환. 내용은 0으로 초기화 malloc() void* malloc(unsigned size) size 바이트의 공간을 할당하고,시작 지점의 포인터를 반환. free() void* free(void* p..

C언어 이론 11. 표준 라이브러리(정의~문자열 처리 함수)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. 표준 라이브러리 함수 ① C언어 표준 규약에 의해서 모든 컴파일러가 기본적으로 제공하도록 약속되어 있는 함수들을 말한다. ② 표준 함수들의 선언은 표준 헤더파일에 있으므로 사용하기 위해서는 함수가 선언된 표준 헤더파일을 #include 해줘야한다. ③ 기본 함수의 정의는 라이브러리 파일에 있으며 링크 과정에서 연결된다. ④ 현재 가장 최신의 표준 규약은 C17이다. ⑤ 이런 표준 함수를 모두 외우는건 비효율적이며, 어떻게 쓰이는지를 알아뒀다가 필요할때마다 레퍼런스를 참조하여 사용하면 된다. ⑥ 아래는 주요한 함수들과 이를 포함하는 헤더파일이다. ⑦ 하나의 함수가 여러개의 헤더파일에 저장되어 ..

C언어 이론 10. 전처리기(연산자 #과 ##, #error, #line)

내용 출처 : YES C (정보공학연구소 /생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Ⅰ. #과 ## ① #과 ##은 #define 전처리문에서만 사용되는 특수한 연산자이다. ② C언어 자체의 연산자는 아니기에 우선순위나 결합규칙등은 적용되지 않는다. ③ #(strizing operator)는 #define문의 인수앞에 사용되어, 피연산자를 문자열로 바꿔준다. ④ #과 형식 인수 사이의 공백, 형식 인수 다음의 공백은 무시된다. ex) #define(#exp) == #define(# exp) == #define(#exp ) == #define(# exp ) ⑤ 실인수 내의 연속되는 공백은 하나만 인정된다. 실인수내에 있는 주석은 하나의 공백으로 치환된다. ⑥ 실인수 내에 확장열로 ..

반응형