[ 언어 및 문법 ]
[CS] CMake, LIB, DLL
CMake CMake : 빌드 도구 (빌드 시 : .exe, .lib, .dll 파일 생성됨) "멀티 플랫폼을 위한 빌드 지원 시스템" 이 중 lib(정적 라이브러리)와 dll (동적 라이브러리)을 외부에서 사용할 수 있도록 공유 lib : 프로그램 실행 직전에 호출됨 (컴파일 시 호출, 링크) dll : 프로그램 실행될 때 호출됨 (컴파일 할 때가 아닌 실제 exe 실행될 때) => 해당 프로그램(exe)와 같은 경로상에 존재해야 함 즉, CMake : cpp 파일들을 lib, dll로 만드는 것 (+.h) CMake의 목적 : 코드 은닉화 or 사용할 환경에 맞게 빌드하기 cf. 빌드 : cpp 파일 -> obj(.o) 바이너리 파일로 변환(컴파일) -> 링크 -> 실행가능한 바이너리 파일(.exe)..
[C++] string 클래스와 문자열 입출력 (cin, getlline(), c_str(), atoi())
C++의 클래스 다양한 문자열 메소드를 제공하는 STL c_strI(), length(), copy(), compare(), begin(), end(), operator + 등 지원 C언어의 char * 문자열과 달리, 문자열 끝에 '\0' 과 같은 null이 들어가 있지 않음 string 객체 생성 방법 // 방법 1 string str1("Hello"); // 방법 2 string str1; str1 = "Hello"; // 방법 3 string str2(str1); string 문자열 입력 받기 (cin vs getline) cin : 공백 문자 만나면 입력 받기 종료 ("Hello World"에서 "Hello" 까지만 입력받음) getline() : 공백 포함 한 줄 모두 입력받음. (에 정의된 ..
[CS] 헤더란 (*.h) & 다수의 파일로 관리하기 & <>, "" 차이
수많은 함수를 만들게 되는데 한 파일에 다 선언하고 정의해 놓으면 가독성도 좋지 못하고 비효울적 따라서 여러 함수들을 각각 다른 cpp 파일들에 기능을 구현해두고 .h 헤더파일에 선언만 해두면 추후 사용히 단순히 #include "~.h" 으로 불러오기만 하면 됨. 헤더 파일 : 클래스 선언부 일종의 메뉴판 같은 역할 클래스의 재사용을 위해 분리해서 저장. 클래스마다 분리하여 저장. main 함수에서 다른 소스파일(*.cpp)에 정의된 함수들 사용하기 헤더 파일(*.h)에 함수 정의부를 선언만 해주면 된다! 헤더 파일에 선언 전 : 함수 사용 불가 ! 헤더 파일에 선언 후 : 함수 사용 가능 ! 와 " *.h" 의 차이 1. VS 컴파일러가 설치된 폴더 경로에 있는 헤더 파일 ..
[CS] 클래스, 생성자, 소멸자, 멤버함수
생성자와 소멸자 cf. 생성자와 소멸자 모두 자동으로 호출되는 함수, 모두 return 값이 없고 void도 사용할 수 없다! cf. 포인터를 사용하지 않는다면, for loop 등 한 블록이 끝나는 동시에 자동으로 소멸됨! (소멸자에 따로 정의 안해도) 생성자 ClassEx::ClassEx() 형태 인자를 가질 수 있음 클래스의 객체 생성과 동시에 멤버 변수 초기화 가능. 클래스 이름과 동일한 이름으로 구현되며, return 값 없음 ClassEx::ClassEX(int a, int b) : A(a), B(b) => 이런식으로 인자가 있는 생성자는 A, B 각각을 a, b로 초기화하는 역할을 함 멤버함수와 마찬가지로 public 접근지정자로 지정해야 객체 생성 가능! 소멸자 ClassEx::~Class..
[CS] 빌드 과정 : 전처리 -> 컴파일 -> 링크 (+디버깅)
컴파일(compile) : 소스 코드의 문법(명령어들)을 분석해 기계어로 번역, 오브젝트 파일로 만듦 (with. 헤더파일(.h) : 어떤 함수가 있는지, #include, #define 들이 선언된 파일. 함수 정의, 사람이 읽을 수 있는 소스코드 형식) 링킹(linking) : 오브젝트(.o) 파일들을 연결. 즉, 기계어로 바뀐 프로그램 코드에서 사용한 함수들을 연결 (with. 정적(.lib), 동적(.dll) 라이브러리 : 함수에 대한 정의가 구현된 부분) 빌드(build) : 컴파일러가 번역한 것과 그외의 다양한 것들(ex. 라이브러리)을 모아 실행가능한 파일(.exe => bianary)로 만듦 디버깅(debug) : 버그 잡는 것 빌드 : 코드 -> 컴파일(기계어(.o => binary)로 ..