C언어 따배시
23.3.13 C언어와 언어
프로그래밍에서 말하는 함수와 수학에서 말하는 함수는 좀 다르다. 프로그래밍에서 말하는 함수는 ‘기능’으로 이해해야한다. 목적을 위한 기능. 이 기능단위로 프로그램을 설계해서 목적을 달성하는 것이 소프트웨어 개발.
프로그래밍을 할 때 고려하는 함수는 입력이 여러개일수도 있고, 출력이 여러개일수도 있고, 입출력이 각각 없을 수도 있다. 그럼에도 내부에서 어떤 기능을 한다는 게 중요한 것. 함수가 복잡할때는 가장 큰 함수부터 보는 것이 중요하다.
객체지향함수에서는 함수를 포함하는 더 큰 개념인 객체라는걸 배우게 된다.
비주얼스튜디오에서 c언어를 쓰는 방법
컨트롤 에프오로 실행했을 때 process 0000는 운영체제가 그 실행파일에 랜덤으로 부여하는 숫자
우리가 만든 프로그램은 컴퓨터는 하나의 함수로 이해한다. os가 우리의 프로그램을 실행하고 0이라는 숫자를 잘 돌려받았다는 의미
main이라는 함수가 만든 0이라는 함수를 잘 돌려받았다.
main은 가장 큰 함수가 됨. 운영체제가 우리가 만든 프로그램을 실행시킬 때 main이라는 함수를 찾는다. main은 함수 언어가 고정되어있음.
int는 정수자료형의 약자. return이 정수형을 돌려주니까.
전통적으로 main함수는 0이라는 함수를 돌려주게 코딩함. 0을 돌려주면 문제가 없다고 이해하면 됨.
ㅡㅡㅡㅡㅡ
컴파일러와 링커의 기능에 대해
c언어같은 프로그램을 고수준 프로그래밍 언어라고 한다. 고수준은 조금더 추상적인, 인간이 이해하기 편한 언어라는 의미.
컴파일러와 링커가 하는 일 – 인간이 하는 일은 소스코드를 작성하는 일임. 이 소스코드를 컴파일러가 컴파일을 함 그러면 컴파일러가 번역을 해주는데, 만약 번역할게 너무 많다면?
보통 c파일 하나당 오브젝트 코드라는 파일로 번역함. 이후 링커라는 것이 이 오브젝트 코드라는 파일을 엮어서 최종적인 실행파일로 만들어줌. 그리고 우리가 코딩할 때 우리가 사용하는 모든 함수가 다 우리가 만드는 함수가 아니고, 이미 내장된 함수를 쓰는경우가 많음. 이걸 라이브러리라고 하는데, 링커는 우리가 사용한 라이브러리에 들어갈 함수들을 실행파일 만들 때 넣어줌.
우리가 #include치는건, 이러이러한 라이브러리에 있는 함수를 우리가 가져다 쓸거니까 나중에 링커보고 합쳐달라는 의미.
추가적으로, 스타트업 코드라는게 있음. 처음시작할 때 메모리 어떻게 할당할지.. 이런 함수 이런것도 링커가 같이 엮어줌.
c언어에서는 그렇다.. 언어마다 이 과정은 달라진다.