[2-1] 간단한 프로그램 짜기

2024. 8. 22. 18:18·📚 STUDY/🔥 C

📌 [프로그래밍] 어록 프로그래밍하기

🌐 pun.c

  • 실행될 때마다 이 메시지를 전송함. To C, or not to C: that is the question.  
#include <stdio.h>

int main(void) {
	printf("To C, or not to C: that is the question.\n");
    return 0;
}

 

#include : C의 표준 입출력 라이브러리에 대한 정보를 첨가하기 위해 필요한 줄

프로그램에서 사실상 실행되는 코드는 main에 존재함. (대표 프로그램을 의미)

main 안에 유일한 명령어는 원하는 자료를 출력해주는 printf 함수

printf : 표준 입출력 라이브러리에 내장된 함수로, 데이터를 깔끔하게 출력해줌.

\n : 다음 줄로 넘긴다는 의미임.

return 0; : 프로그램이 종료될 때, OS에 0이라는 값을 넘김.

 

📌 컴파일과 링크

위 프로그램은 짧고 간결하지만, 실제로 실행하는 건 생각보다 가벼운 일이 아님.

 

1. pun.c의 이름을 갖고 있고, 위의 프로그램 코드 내용을 가진 파일을 제작해야 함. 

    (파일 이름은 상관없고, 대부분의 컴파일러는 뒤에 .c 확장자명이 있어야 컴파일이 가능함.)

2. 이 프로그램을 컴퓨터가 실행할 수 있는 형태로 만들어야 함.

    ① 전처리기 (Preprocessing)

         - 프로그램은 우선 전처리기에 보내지는데, 전처리기는 #으로 시작하는 지시어로 알려진 줄들의 지시를 먼저 따름.

           (프로그램에 무언가를 추가, 수정할 수 있어 에디터와 같다고 볼 수 있음.)

    ② 컴파일 (Compiling)

        - 수정된 프로그램은 컴파일러로 보내지는데, 여기서 코드는 기계어 명령문(object code)로 번역됨.

           (번역은 했지만, 아직 프로그램을 실행할 수 없는 상태)

    ③ 링킹 (Linking)

         - 링커가 컴파일에 의해 생성된 목적 코드를 프로그램을 완벽하게 실행하기 위해 필요한 추가적인 코드와 합침.

            추가적인 코드란, 보통 프로그램에 사용되는 라이브러리 내부 명령문을 의미함.

            (ex, 위 코드에서 printf)

이 과정은 모두 자동으로 처리되기에, 부담가질 필요 ❌, 컴파일과 링크를 하기 위한 명령들은 컴파일러, OS에 따라 다름.

 

in UNIX, pun.c를 컴파일하기 위해 터미널이나 커맨드 라인 창에 입력해야하는 명령문은 아래와 같음.

% cc pun.c

% : 프롬프트 (사용자가 입력하는 거 ❌)

cc : 링킹이 자동으로 이루어짐. 

컴파일(②)과 링킹(③)이 끝나면, cc는 실행 가능한 프로그램을 보통 기본 설정에 따라 a.out이라는 이름으로 만들어냄.

 

cc의 다양한 옵션 중 하나 -o : 실행 가능한 프로그램을 포함하는 파일의 이름을 바꿀 수 있게 해줌.

pun.c 프로그램을 pun이라는 이름으로 생성하고 싶을 때 명령문은 아래와 같음.

% gcc -o pun pun.c

 

 

💡 본 내용은 K.N.King의 C Programming: A Modern Approach 책을 참고하였습니다.

저작자표시 (새창열림)

'📚 STUDY > 🔥 C' 카테고리의 다른 글

[2-3] 주석  (1) 2024.08.22
[2-2] 간단한 프로그램의 일반적인 구조  (0) 2024.08.22
Q&A (lint에 관하여)  (2) 2024.08.21
[1-2] 장점과 단점  (3) 2024.08.21
[1-1] C의 역사  (2) 2024.08.21
'📚 STUDY/🔥 C' 카테고리의 다른 글
  • [2-3] 주석
  • [2-2] 간단한 프로그램의 일반적인 구조
  • Q&A (lint에 관하여)
  • [1-2] 장점과 단점
엄지잉
엄지잉
공부하는거 올림
  • 엄지잉
    엄지잉의 이것저것
    엄지잉
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • 🏫 학교 (2)
        • 👩‍🏫 교직 (1)
        • 🏢 USG (1)
      • 🌱 탐구 (17)
        • 📷 SLAM (7)
        • 💡 연구 (8)
        • 🌐 BOJ (2)
      • 📚 STUDY (47)
        • 🔥 C (32)
        • 📈 알고리즘 (9)
        • 👀 컴퓨터비전 (5)
        • 🔆 UNITY (1)
      • 🏆 자격증 (23)
        • ⚡ 정처기 (17)
        • 🔠 TOEIC (6)
      • 🎈 활동 (4)
        • 🎁 CJ 리모트 인턴십 (2)
        • 😶 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    Slam
    컴퓨터비전
    C++
    Body Tracking
    필기
    SW 개발
    정보시스템 구축관리
    2022년
    실기
    mocopi
    프언 활용
    식별자
    BOJ
    azurekinect
    DB 구축
    Unity
    C
    정처기
    모션캡처
    opencv
    Azure Kinect
    Remote Internship
    SW 설계
    c기초
    RC
    토익
    정보처리기사
    2021년
    C언어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
엄지잉
[2-1] 간단한 프로그램 짜기
상단으로

티스토리툴바