#은 전처리기다. 전처리기는 컴파일을 시작하면 우선적으로 처리한다.
씹어먹는 C++ - <20 - 1. 코드 부터 실행 파일 까지 - 전체적인 개요>
공부 링크 참조 : https://modoocode.com/319
컴파일이란 우리가 비주얼 스튜디오나 어디선든지 소스코드를 작성하면, 그것이 실행 파일로 변환되기 위해서 필요한 과정들.
1. #이 붙은 전처리기 매크로 처리 (전처리 PreProcessing)
2. 작성한 소스 파일들을 어셈블리 명령어로 변환하는 컴파일 단계 (compile)
3. 어셈블리 코드들을 실제 기계어로 이루어진 목적 코드로 변환하는 어셈블 단계 (Assemble)
4. 각각의 목적 코드들을 모아 하나의 실행파일로 만들어주는 링킹 단계 (Linking)
C는 .h를 붙여서 헤더 파일 확장자가 있다. (<stdio.h>, <stdlib.h> 등등) C/C++ 다 사용가능
C++ 은 헤더 파일 확장자가 없다. (<vector> <string>) using name space std; 같이 사용
해당링크로 가면 각 전처리기 단계, 컴파일 단계, 어셈블 단계, 링킹 단계를 또 세부적으로 설명해준다.
전처리기 단계 메모
=> #include로 복사된 헤더파일은 다시 전처리기의 단계를 거친다. 이와 같은 방식은 비효율적.
우리는 #include <iostream> 을 포함하는 간단한 두줄만 쓴다고 해도, 실제 컴파일러는 몇만줄의 코드를 본다고 한다.
이런 문제를 해결 하기 위해 미리 컴파일된 헤더(Precompiled header) 개념이 도입되었다고 함.
사용시 몇 가지 제약이 있음.
컴파일
=> 전처리기 토큰들이 컴파일 토큰으로 변환, 컴파일 토큰들은 컴파일러에 의해 해석되어 해석 유닛 생성.
해석 유닛을 분석해 필요로 하는 템플릿 인스턴스들을 확인. -> 인스턴스 유닛 생성
이 단계를 마치면 컴파일러는 비로소 목적 코드를 생성할 수 있다.
링킹 단계
=> 컴파일러가 생성한 목적 파일들과 외부 라이브러리 파일들을 모아서 실행 파일을 생성. 이 링킹 과정이 끝나는 시스템마다 각기 다른 형태 파일 생성 (윈도우는 .exe)
공부 링크 : http://www.tcpschool.com/cpp/cpp_intro_iostream
c++의 모든 것은 객체로 표현된다. C언어의 함수와는 달리 입출력을 담당하는 수단도 모두 객체!!
cout 객체 : 출력 스트림을 나타내는 객체
문법 : std::cout << 출력 데이터;
<< (삽입 연산자) 는 오른쪽에 위치한 출력할 데이터를 출력 스트림에 삽입한다.
이렇게 출력 스트림에 삽입된 데이터는 스트림을 통해 출력 장치로 전달되어 출력.
cin 객체 : 입력 스트림을 나타내는 객체
문법 : std::cin >> 저장할 변수;
>> (추출 연산자) 는 사용자가 입력한 데이터를 입력 스트림에서 추출하여, 오른쪽에 위치한 변수에 저장.
연습
#include <iostream>
using namespace std;
int main()
{
int likeNum;
cout << "좋아하는 숫자를 말해봅시다 : ";
// 사용자가 입력한 데이터를 입력 스트림에서 추출해서 likenum에 저장
cin >> likeNum;
cout << "당신이 좋아하는 숫자는"<< likeNum << "입니다." << endl;
// endl은 함수다. \n을 출력해주는 함수
return 0;
}
'공부 > C, C++' 카테고리의 다른 글
게임 개발에서 i++이 아니라 ++i를 사용하는 이유 (0) | 2023.11.02 |
---|---|
[WinAPI] 글자(텍스트) 출력, 글자 색 변경, 글자 배경색 투명하게 (0) | 2022.11.18 |
[C++] 싱글톤 패턴(2) - 데이터 영역에 객체 생성 방식 (0) | 2022.09.08 |
[C++] 싱글톤 패턴(1) - 동적 할당 방식 (0) | 2022.09.08 |
[C/C++] Class (3) - 레퍼런스 변수 (0) | 2022.03.22 |
댓글