1. 전처리 지시자
C++로 작성된 소스 코드를 프로그램으로 만드는 빌드(build)작업은 세 단계를 거치며, 전처리 지시자(directive)는 전처리기에 전달할 사항을 표현하며, '#' 문자로 시작한다.
빌드 작업: 전처리(Preprocess) -> 컴파일(complie) -> 링크(link)
2. main ( ) 함수
main 함수는 매개변수를 받지 않거나, 두 매개변수를 받도록 작성할 수 있다.
int main (int argc, char* argv[])
- argc: 프로그램에 전달할 인수 개수
- argv[]: 전달할 인수의 값을 담는 배열
- argv[0]에는 프로그램 이름이 담김.
* 주의: 실제 매개변수는 인덱스 1부터 시작한다.
3. (C++17) std::byte
c++17 이전에는 한 바이트를 char나 unsigned char로 표현했다. c++17 이후로는 std::byte b{50}; 으로 표현이 가능하다.
4. (C++17)if문 이니셜라이저
c++17부터 if문 안에 이니셜라이저(초기자:initializer)를 넣는 기능이 추가됐다.
<이니셜라이저>에서 정의한 변수는 <조건문>, <본문>안에서만 사용할 수 있고 if 문 밖에서는 사용할 수 없다.
if (<이니셜라이저> ; <조건문>) {<본문>}
5. (C++17) switch문 이니셜라이저, 폴스루 fallthrough (흘려보내기)
switch (<이니셜라이저> ; <표현식>) {<본문>}
[[fallthrough]]: switch 문의 조건으로 지정한 값과 일치하는 문이 있다면 break문이 나타날 때까지 실행이 된다. 이때 break문이 없다면 다음에 나오는 case문도 계속해서 실행하는데, 이렇게 실행되는 것을 폴스루라 하며, 이에 발생하는 버그를 예방하기 위해 [[fallthrough]] 속성을 지정해 의도적으로 폴스루 방식으로 작성했다고 컴파일러에 알려줄 수 있다.
6. 현재 함수 이름
함수마다 내부적으로 __func__라는 로컬 변수가 정의돼 있다. 이 변수는 현재 함수의 이름을 값으로 갖고 있으며, 주로 로그를 남기는데 활용한다.
7. (C++17)구조적 바인딩 (structured binding)
구조적 바인딩을 이용하면 여러 개의 변수를 선언할 때 배열, 구조체, 페어 또는 튜플의 값으로 초기화할 수 있다. 구조적 바인딩을 적용하려면 반드시 auto 키워드를 붙여야 한다. non-static이면서 public으로 선언된 데이터라면 어떤 것도 적용할 수 있다.
8. 이니셜라이저 리스트
<initializer_list> 헤더 파일에 정의돼 있는 이니셜라이저 리스트는 여러 인수를 받는 함수를 쉽게 작성할 수 있도록 도와주는 리스트이다.
#include <initializer_list>
int Sum(initializer_list<int> Lst) { ... ;}
---------------------------------------------------------------------------------
Sum({1, 2, 3}); [함수 호출 방법]
Sum({10, 200, 300});
Reference.
도서 1 : 게임 서버 프로그래밍 교과서 (길벗, 배현직)
'👨🏻💻 programming > ◽ c, c++' 카테고리의 다른 글
(c++) 디자인 패턴 01(싱글톤, 추상 팩토리, 옵저버, 프록시, 어댑터) (2) | 2022.08.24 |
---|---|
(c++17) decltype, 로 스트링 리터럴, static, const, extern, mutable, constexpr, 타입 앨리어스, 스코프, 레퍼런스, 어트리튜트 (4) | 2022.08.11 |
[C++] 멀티 프로그래밍(전문가를 위한 C++ , Chapter 27 정리 ) (0) | 2022.05.16 |
[c++]'전문가를 위한 C++17'을 공부하며 정리(ing...) (0) | 2022.05.16 |
[C++] 제네릭 알고리즘 모음 (0) | 2022.05.16 |
안 하는 것 보다 낫겠지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!