본문 바로가기

C++16

Google C++ Style Guide : 범위(Scoping) Scoping 네임스페이스 (Namespaces) 몇 가지 예외들을 제외하고는 네임스페이스에 코드를 배치한다. 네임스페이스는 프로젝트 이름과 가능한 경로를 기준으로 고유한 이름을 가져야 한다. using 지시문을 사용하지 마라 (예 : using namespace foo) 인라인 네임스페이스를 사용하지 마라. 명명되지 않은 네임스페이스에 대해서는 내부 연계(Internal Linkage)를 참조하라. 정의: 네임스페이스는 전역 범위를 고유한, 명명된 범위로 세분화하므로 전역 범위에서 이름 충돌을 방지하는데 유용하다. 장점: 네임스페이스는 대부분의 코드가 합리적으로 짧은 이름을 사용할 수 있도록 하면서 대규모 프로그램에서 이름 충돌을 방지하는 방법을 제공한다. 예를 들어 두 개의 서로 다른 프로젝트에 전역.. 2022. 5. 16.
Google C++ Style Guide : 헤더 파일(Header Files) 헤더 파일(Header Files) 일반적으로 모든 .cc 파일에는 연관된 .h 파일이 있어야 한다. 유닛 테스트 및 main() 함수만 포함하는 작은 .cc 파일과 같은 몇 가지 common 예외가 있다. 헤더 파일을 올바르게 사용하면 코드의 가독성, 사이즈 및 성능에 큰 차이를 가져올 수 있다. 다음의 규칙들은 헤더 파일을 사용할 때 발생하는 다양한 위험에 대해 소개한다. 자체 포함 헤더 (Self-contained Headers) 헤더 파일은 독립적이어야 하고(자체적으로 컴파일해야 함) .h로 끝나야 한다. 포함을 위한 비헤더 파일은 .inc로 끝나야 하며 신중하게 사용해야 한다. 여기서 포함을 위한 비헤더 파일은 무엇일까? An .inc file is not a header file. it cou.. 2022. 5. 1.
C++14 : 람다 캡처 표현식(Lambda capture expressions) C++11 람다 함수는 값 복사 또는 참조로 외부 범위에서 선언된 변수를 캡처한다. 이는 람다의 값 멤버가 이동 전용 타입이 될 수 없음을 의미한다. C++14에서는 캡처된 멤버를 임의의 표현식으로 초기화할 수 있다. 이를 통해 외부 범위에 해당하는 명명된 변수를 갖지 않고도 값 이동에 의한 캡처와 람다의 임의 멤버 선언을 모두 수행할 수 있다. 이것은 이니셜라이저 표현식을 사용하여 수행됩니다. auto lambda = [value = 1] {return value;}; 람다 함수 lambda는 초기화한 값인 1을 반환한다. 선언된 캡처는 자동으로 이니셜라이저 표현식에서 타입을 추론한다. 이것은 표준 std::move 함수를 사용하여 이동으로 캡처하는 데 사용할 수 있다. std::unique_ptr p.. 2022. 4. 28.
Google C++ Style Guide 번역 정리 : C++ Version Google C++ Style Guide 번역 정리 Google C++ Style Guide 번역 정리 차례 C++ Version - C++ Version 헤더 파일 - Header Files 자체 포함 헤더 - Self-contained Headers #define가드 - The #define Guard 사용하는 항목 포함 - Include What You Use 전방 선언 - Forward Declarat.. mypark.tistory.com C++ Version 현재 코드는 C++17을 대상으로 해야 한다. 즉, 지정된 초기화(designated initializers)를 제외하고 C++2x 기능을 사용해서는 안된다. 이 가이드의 대상이 되는 C++버전은 시간이 지남에 따라 (공격적으로) 발전할 것.. 2022. 4. 15.
300x250