Preprocessing
directives 를 사전에 처리
Compiling
Preprocessing을 거친 code를 machine instructions(object code)로 수정
Linking
linker가 compiler에 의해 생성된 object code와 (library functions 같이) 필요한 추가 코드를 묶어서 실행 가능한 프로그램을 만듦
최근에는 IDE(Intergrated Development Environments)를 통해 위의 모든 과정(+디버깅)을 한번에 진행하기도 함
directives
int main(void){
statements
}
directives : #으로 시작하고, 한줄로 끝남, 뒤에 semicolon(;)이 붙지 않음
statements : 프로그램이 돌아가는 동안 실행되는 명령어
장점 : line이 종료될때 같이 종료돼서 오류 발생 위험 적음
Standard에 따르면, comments는 single space character로 치환된다.
따라서 a/**/b = 0; 같은 trick은 먹히지 않는다.(ab = 0; 이 아니라 a b = 0; 이 되기 때문)
C89에서 declarations은 무조건 statements 위에 와야 했지만,
C99에서는 굳이 그럴 필요가 없다. variable이 사용되기 전에만 declare되면 된다.
float형 변수에 assign할때는 숫자 뒤에 f 붙여주는게 좋다. 실수 constant는 double로 인식하기 때문에 float에 double을 assign하는걸로 받아들여진다.
indentifier : 변수, 함수, macro 등의 이름
1. letters
2. underscores
3. digits(맨 앞에 올 수 없다)
+ case sensitive
+ universal character names(C99)
Keywords : idnetifier가 될 수 없는 것들.(ex. extern, short, ...) (목록은 p.26 참고)
tokens : groups of characters that can't be split up without changing their meaning
C program은 token들이 모인거로 볼 수 있다.
token 사이에는 아무 공백(blanks, spaces, tabs, new line characters)이나 올 수 있다.
하지만
token 안에는 공백이 올 수 없다.(의미를 변경하거나 에러를 일으킴)
string에서는 space는 허용되지만, new-line character는 허용 안 됨.(chapter 13.1에서 '\'를 사용하는 방법을 배움)