clang -std=c89 -W -Wall -pedantic-errors main.c
//컴파일러, c89표준으로 컴파일하라, Warning 다 켜라, 문제들이 있으면 에러 많이 내뱉어라, 마지막에 main.c 빌드해라
//clang 실제 문서에서 각 컴파일 flag들이 무슨 역할 하는지 적혀있음
//컴파일할 때 어떤 옵션으로 할 것인지 써주는 것들
//main.c 대신에 *.c 하면 모든 C파일 컴파일해서 실행파일 만들어달라고 할 수 있다
//실행파일은 특별히 지정 안 하는 이상 다 a로 나온다.
//윈도우에서는 a.exe, 리눅스에서는 a.out
./a.out
echo $?
요약: c에서 컴파일 화는 과정, 어떤 라이브러리를 가져오겠다고 #include하는 과정은 <> 안에 있는 해당 텍스트 파일을 열어서 코드를 전부 복붙해오는 과정이라고 생각하면 된다.
헤더 파일을 include할 때 실제로 일어나는 일
전처리기는 컴파일을 시작하기 전에 include를 찾는다.
C의 Hello World (.c) (.h)
#include<stdio.h> //헤더 파일 발견
//C의 #include는 헤더 파일(*.h)을 열어서 그 내용을 복사해서
//아예 이 위치에 붙여버린다.
int main()
{
printf("Hello World!");
return 0;
}
즉, 위와 같은 상태로 컴파일을 돌리면
include로 가져온 파일 속에 있는 모든 코드들도 먼저 같이 포함된 상태로
컴파일이 되는 것이다.
C#의 Hello World (.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello_World
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
//Console.WriteLine()같은 함수는
//C#언어를 사용하면 가져다 쓰라고 만든 함수, 변수들을 모아놓은 것들 중 하나
}
}
}