Today I Learned(TIL) 21.07.21

미네·2021년 7월 21일
0

TIL

목록 보기
3/21
post-thumbnail

오늘 공부한 것

오늘 배운 것

  • 컴파일링의 4단계
    • 1단계 전처리(Precomplie)
      전처리한 소스 코드 생성
    • 2단계 컴파일(Compile)
      C코드를 어셈블리어(저수준 프로그래밍 언어)로 컴파일
    • 3단계 어셈블(Assemble)
      어셈블리 코드를 오브젝트 코드로 변환
    • 4단계 링크(Link)
      여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐야 할 경우 해당 단계가 필요
  • 버그(bug)와 디버깅(debugging)
    • 버그란 코드에 들어있는 오류
    • 디버깅은 코드에 있는 버그를 식별하고 고치는 과정
    • 프로그램이 멈추는 특정 지점을 중지점이라고 하는데, 멈춰진 그 지점에서 무슨일이 일어나는지 볼 수있다.
  • 실생활의 어떤 데이터를 배열로 표현할 수 있을까?
    • 하나의 주제 (하나의 type)의 여러 데이터가 필요한 경우 하나의 배열로 표현할 수 있다.
  • 널 종단 문자는 왜 필요할까?
    • char의 배열 형태인 string의 끝을 인식하기 위해서 필요하다.
  • <string.h> 의 라이브러리에는 여러 함수가 있고, 그 중 strlen는 문자열 길이를 계산한다.
  • 명령행 인자
    • make나 clang과 같은 프로그램을 실행할 때 컴파일하고자 하는 코드 외에도 컴파일 후 저장하고자 하는 파일명과 같이 추가적인 정보를 함께 줄 수도 있는데 이런 정보들을 명령행 인자라고 부른다.

예를들어, 아래의 프로그램을 "arg.c"라는 이름으로 저장하고 컴파일 한 후
"./argc"를 실행하면 "hello, world"라는 값이 출력된다.
명령행 인자에 주어진 값이 프로그램 이름 하나밖에 없기 때문이다.
하지만 "./argc David"로 실행하면 "hello, David"라는 값이 출력된다.

int main(int argc, string argv[])
{
    if (argc == 2)
    {
        printf("hello, %s\n", argv[1]);
    }
    else
    {
        printf("hello, world\n");
    }
}

내일 할 일

0개의 댓글