컴파일링
make 나 clang을 사용해서 프로그램을 실행할 때 네 개의 단계를 거친다.
- 전처리 : # 으로 시작되는 C 소스 코드는 전처리기에게 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려준다. (ex. #include는 전처리기에게 다른 파일의 내용을 포함시키라고 알려준다. 전처리기는 새로운 파일을 생성하는데 이 파일은 여전히 C소스 코드 형태이다.)
- 컴파일링 : 컴파일러라고 불리는 프로그램은 C 코드를 어셈블리어라는 저수준 프로그래밍 언어로 컴파일한다.
- 어셈블링 : 어셈블리 코드를 오브젝트 코드로 변환시킨다. 연속된 0과 1들로 바꿔주는 작업
- 링킹 : 여러 개의 다른 오브젝트 코드 파일을 실행 가능한 하나의 오브젝트 코드 파일
명령행 인자
#include <cs50.h>
#include <stdio.h>
int main(int argc, string argv[])
{
if (argc == 2)
{
printf("hello, %s\n", argv[1]);
}
else
{
printf("hello, world\n");
}
}
argc는 main 함수가 받게 될 입력의 개수
argv[]는입력이포함되어있는 배열
arg.c라는 이름으로 저장하고 컴파일 한 후 ./argc로 실행해보면 hello, world라는 값이 출력
./argc David로 실행해보면 hello, David라는 값이 출력
출처