본문 바로가기

프로그래밍/C*3

(C) 파일의 분할 / 헤더파일 디자인 파일의 분할 코드 파일의 크기가 커지면 분할하여 사용하는 것이 합리적이다. 책에 예시로 나와 있듯이 서랍장 하나에 다 박아두는 것보다, 여러 서랍장에 용도별로 나누는 것이 더 효율적이기 때문. 다만 파일을 여러 개로 나눈 경우, 컴파일 시 파일 하나 하나 개별적으로 컴파일이 진행되므로 해당 파일 내에서 선언되지 않은 함수나 변수는 ( 다른 파일에서 선언했으나 해당 파일에서 사용되는) extern 선언을 해 줘야 한다. (참고로 여러 파일을 묶어서 하나의 프로그램으로 컴파일을 할 때, 본체는 main 함수가 들어 있는 파일이라고 생각한다.) extern int a; extern void PrintHello(void); int main(void) { int b = a; PrintHello(); return .. 2022. 3. 5.
(C) 매크로와 선행처리기 선행처리는 우리가 소스 코드상 맨 위에 적어 놓은 # 명령어를 수행하는 과정이다. 대부분 단순 치환으로 이루어져 있다. 예를 들면 #include 는 stdio.h 파일의 내용을 소스 코드 안에 붙여넣는 일을 한다. #define A B 는 매크로 A 를 매크로 몸체(대체 리스트)인 B로 치환을 한다. 이 #define 명령어에 대해 자세히 알아보자. #define A B 는 두 가지 형태로 사용이 가능한데, 첫번째는 Object-like macro 가 있다. 이런 형태는 변수 선언하듯이 사용해서 상수처럼 사용을 한다. #define PI3.14 int a = PI; 위와 같은 코드에서 선행처리 과정을 거치면 모든 PI 들이 3.14로 대체된다. 이런 의미에서 상수와 같다고 본다. 그리고 두번째 형태는 .. 2022. 3. 3.
C에서 메모리의 동적 할당 C 공부는 오래전부터 윤성우의 열혈강의 C로 하고 있다. 물론 이외에도 책은 많이 있으나 이게 가장 쉽고 빠르게 공부가 가능하기도 하고 프로그래밍을 처음으로 공부하게 된 책이므로 아무래도 애정이 간다. 최근에 미뤄뒀던 후반부 몇 챕터를 공부하면서 문제풀이도 해보고 노트정리 하는 셈 치면서 블로그를 이용해보려 한다. ----------------------------------------------------------------------------------- 프로그램 실행 시 운영체제에서 마련하는 네 가지 영역이 있다. 1. 코드 영역 2. 데이터 영역 3. 힙 영역 4. 스택 영역 CPU, 메모리나 레지스트리들의 작동원리나 어셈블리에 관해 조금 공부를 했다면 어느 정도 알고 있을 내용이라 생각한다... 2022. 3. 1.