본문 바로가기

C언어/C언어17

[C언어]전처리(Preprocessing) 단계 전처리 단계에 대해서 설명해 보겠다. 전처리 과정의 뜻은 대략적으로 소스코드를 확장된 소스 코드(=트랜스레이션 유닛)로 바꿔주는 과정을 말한다. 이전 글에서도 간단하게 #include 가 어떤 식으로 작동하는지를 보여줬는데 모든 #으로 시작하는 매크로는 아래와 같은 방식으로 작동되니 알고 있으면 될 것 같다. 전처리 과정 입력 : C파일 하나 주석제거 : C파일에 있는 모든 주석을 제거해 주는 작업을 한다. 매크로를 복붙(확장)함 #으로 시작하는 것들을 매크로라고 하는데, 이 매크로들은 전부다 복붙을 한다고 보면 된다. 확장 : (#include "헤더파일")을 지우고 그 자리에 헤더파일 속에 있는 내용을 복사해서 가져다 붙인다. 인클루드는 꼭 헤더파일만 하는 것은 아니다 .c 파일도 가능하지만 컴파일을.. 2023. 2. 16.
[C언어]C언어에서 헤더파일이 필요한 이유?(헤더파일 필요성) 헤더파일 이란 C언어에서는 두 종류의 소스코드 파일이 있다. (.h 와 .c) 이 두 파일을 비교해 보면 다음과 같다. C파일 (.c) 헤더 파일 (.h) 실제 프로그램을 돌게하는 로직 코드를 저장하는 파일 내용(함수 정의(=함수 구현), 매크로, 변수, 전역변수등) 여러 소스코드 파일에 공통적으로 필요한 것들을 저장하는 파일 내용(함수 선언, 매크로, extern 변수 선언등) #include 로 헤더파일을 인클루드 함 여기서 C파일과 헤더 파일은 그냥 합쳐서 하나의 파일로 만들면 되지 않을까?라는 생각이 들 수 있다. 헤더파일의 필요성 없어도 되지만 있는 것이 더 편해서 프로그래머들은 한 파일 안에 모든 코드들을 넣기보다 체계적으로 나누어서 넣는 것을 좋아한다. 그렇기에 연관된 기능끼리 모아서 .c .. 2023. 2. 16.
[C언어]C프로그램 빌드 과정(컴파일,링크,빌드의 차이) 빌드(build)란? 빌드의 뜻은 소스코드를 기계가 이해할 수 있는 기계어로 변환해 주는 과정으로 명령어를 모두 모아서 실행 가능한 실행파일로 만드는 과정으로 세부적으로 나누면 4가지로 나뉘어진다. 전처리(Preprocessing) 컴파일(Compilation) 어셈블(Assembling) 링크(Linking) 빌드안에 컴파일이랑 링크가 속해있는 것으로 보면 된다. 사람마다 전처리,컴파일,어셈블전체를 컴파일로 불러서 빌드 단계를 두 단계로 보는 경우도 있다. 컴파일 링크 컴파일(Compile)이란? 컴파일러가 전처리기가 처리해준 소스 코드를 이용해서 어셈블리어로 바꿔주는 과정을 말한다. 어셈블리어는 기계어와 1:1로 대응이 되는 언어로 하드웨어에 가까운 언어이다. 어셈블리어를 기계어라고 부르기에는 조금 .. 2023. 2. 15.
[C언어]인클루드 가드의 뜻과 사용법(헤더가 꼬일 때,업계표준) 헤더파일(.h) 파일은 주료 함수선언과 전역변수 extern선언할 때 주로 들어간다. (물론 #define 같은 매크로도 들어간다.) 그리고 #include는 저번 글처럼 복사 붙여 넣기(확장)해주는 매크로이다. 헤더파일에 #define 같은 매크로를 다른 헤더파일에서도 사용을 해야 할 일이 있을 때, 양쪽 헤더 파일에 인클루드를 할 때가 있다. 예시코드 파일 3개를 보자 #include "b.h" /* 코드 내용 생략 */ 파일1 a.h #include "a.h" /* 코드 내용 생략 */ 파일 2b.h #include "a.h" int main(void) { /* 코드 내용 생략 */ return 0; } 파일 3 c.c 여기서 c.c 파일을 컴파일하게 되면 어떻게 될까? #include "a.h"에.. 2023. 2. 15.