목록self study/언어의 기본부터 (39)
happy coding
TCP school 을 보고 정리한 내용입니다. 비트(bit) 와 바이트(byte) 비트란 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위이며, 비트에는 2진수의 값(0과1)을 단 하나만 저장할 수 있다. 그리고 바이트란 위와 같은 비트가 8개 모여 구성되며, 한 문자를 표현할 수 있는 최소 단위이다. 바이트 저장 순서(byte order) 컴퓨터가 저장하는 데이터는 대게 32비트(4바이트)나 64비트(8바이트)로 구성되는데, 이렇게 연속되는 바이트를 순서대로 저장해야 하는데 이것을 바이트 저장 순서라고 한다. 이 순서에 따라 1. 빅 엔디안(big endian) 2. 리틀 엔디안(little endian) 으로 나눌 수 있다. 빅 엔디안(big endian) 빅 엔디안 방식은 낮은 주소에 ..
조건부 컴파일을 사용하면 지정한 조건에 따라 코드의 일정 부분을 컴파일할지 안할지를 지정할 수 있느데, 이러한 조건부 컴파일에 사용할 수 있는 조건부 컴파일 지시자(conditional compile directive)는 1. #if 2. #ifdef 3. #ifndef 가 있다. #if #if 조건식1//#if 지시자를 이용한 조건부 컴파일 형식 컴파일할 명령문1 #elif 조건식2 컴파일할 명령문2 #else 컴파일할 명령문3 #endif #if 지시자 다음에 나오는 조건식1의 결과가 0이 아니면 참, 0이면 거짓으로 간주한다. 또한, #elif 지시자를 사용해 조건식을 여러 개 사용할 수도 있다. #else 지시자를 사용해 모든 조건에 해당하지 않는 경우를 지정할 수도 있다. 여기서 주의할 점은 #..
TCP school 을 보고 정리한 내용입니다. 모듈(module) 모듈이란 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위를 의미한다. 보통 하나의 소스 파일에 모든 함수를 작성하지 않고, 함수의 기능별로 따로 모듈을 구성하는데, 이러한 모듈을 합쳐 하나의 파일로 작성하는 방식으로 프로그램을 만들게 된다. 이처럼 프로그램 코드를 기능별로 나눠 독립된 파일에 저장해 관리하는 방식을 모듈화 프로그래밍이라고 한다. 분할 컴파일 작성된 모듈은 개별적으로 컴파일된 후, 링커에 의해 하나의 실행 파일로 만들어진다. 이렇게 하나의 실행 파일을 만들기 위해 소스 파일을 여러 개로 나누어 개발하는 방식을 분할 컴파일 방식이라고 한다. 최종적인 실행 파일의 생성을 위해 접근하는 변수나 호출하는..
헤더 파일(header file) C언어에서 함수는 사용되기 전에 먼저 해당 함수의 원형이 선언되어야 한다. 이 원칙은 표준 함수에도 그대로 적용되며, 표준 함수 또한 사용되기 전에 해당 함수의 원형이 선언되어야 한다. 표준함수의 원형 및 표준 함수와 관련된 다양한 정보를 가지고 있는 파일을 표준 헤더 파일이라고 한다. 또한, 사용자는 자신만의 사용자 헤더 파일을 자유롭게 만들 수 있다. 헤더 파일의 확장자는 보통.h를 사용하며, #include 선행처리 지시자를 사용해 다른 파일에 포함시킬 수 있다. 표준 헤더 파일 표준 함수의 원형 및 표준 함수와 관련된 다양한 정보를 가지고 있는 표준 헤더 파일은 그 크기가 상당히 크지만 크기가 큰 헤더 파일을 포함한다고 프로그램의 크기가 반드시 커지는 것은 아니다..
TCP school을 보고 정리한 내용입니다. 미리 정의된 매크로 C언어에서는 컴파일러가 참고해야 할 정보를 알려주기 위해 몇가지 매크로를 미리 정의해 제공한다. 이 매크로는 #define 선행처리 지시자로 정의하지 않아도 사용할 수 있지만 사용자가 재정의할 수는 없다. __DATE__ 선행처리가 수행된 날짜를 "Mmm dd yyyy"형식으로 나타낸 문자열 __TIME__ 선행처리가 수행된 시간을 "hh:mm:ss"형식으로 나타낸 문자열 __FILE__ 현재 소스 파일의 이름을 나타내는 문자열 __LINE__ 현재 소스 파일에서 처리중인 라인 번호를 나타내는 문자열 __STDC__ 컴파일러가 C언어 표준을 따르면 1로 설정함. __STDC_HOSTED__ 호스트 환경이 아니면 0, 호스트 환경이면 1로 ..
TCP school 을 보고 정리한 내용입니다. 매크로 함수 C언어에서, #define 선행처리 지시문에 인수로 함수의 정의로 전달함으로서, 함수처럼 동작하는 매크로를 만들 수 잇는데, 이러한 매크로를 함수 같은 매크로(function-like-macro) 또는 매크로 함수라고 한다. 함수와 매크로 함수 매크로 함수는 일반 함수와는 달리 단순 치환만을 해주므로, 일반 함수와 완전히 똑같은 방식으로 동작하지는 않는다. 예를 들어, 일반 함수는 인수를 프로그램이 실행 중일 때 전달받지만, 매크로 함수는 인수를 컴파일 이전에 미리 치환한다. 다른 결과값이 반환되는 오류를 미리 방지하기 위해서 각 인수를 모두 괄호로 묶어줘야 한다. 1. 매크로 함수의 전체를 괄호(())로 감싸야 합니다. 2. 매크로 함수의 인..
선행처리기(preprocess) 선행처리란 실행 파일을 생성하는 과정에서 소스 파일 내에 존재하는 선행처리 지시문을 처리하는 작업을 의미한다. 이러한 작업은 컴파일하기 전 선행처리기에 의해 먼저 처리된다. 선행처리기는 코드를 생성하는 것이 아니라, 컴파일러가 컴파일하기 좋도록 소스를 재구성하는 역할을 한다. 선행처리문 특징 1. 선행처리문은 선행처리 문자(#)로 시작한다. 2. 선행처리문은 코드 내에서 하나의 라인을 모두 차지하며, 선행처리문 뒤에 C언어 코드를 추가하여 같이 사용할 수 없다. 3. 선행처리문은 다른 C언어의 명령문과는 달리 맨 뒤에 세미콜론(;)을 붙이지 않다. 4. 선행처리문은 소스 파일 어디에나 위치할 수 있지만, 선행처리문이 위치한 곳에서부터 파일의 끝까지만 영향을 미친다. 선행처..
TCPschool 을 보고 정리한 내용입니다. 파일 입출력 함수 C언어에서 인수를 하나만 전달받는 대부분의 입출력 함수는 스트림이 stdin이나 stdout으로 고정되어 있는 함수지만, 입출력 함수 중에서 이름이 f로 시작되는 함수는 입출력 스트림을 사용자가 직접 지정할 수 있는 함수이다. 인수로 FILE 구조체 변수의 포인터를 전달함으로써 ㅎ표준 입출력 장치뿐만 아니라 파일로도 입출력을 진행할 수 있다. fgetc() 함수 fgetc() 함수는 지정된 스트림으로부터 하나의 문자를 읽어 들이는 함수이며, 읽기에 성공하면 읽은 문자를 반환하고, 파일의 끝에 도달하면 EOF를 반환한다. #include int fgetc(FILE *stream); fgetc() 함수의 반환값은 int형 변수로 저장해야 한다...