본문 바로가기

[Visual Studio] VS2017에 ClangFormat 적용하기 Visual Studio 2017 15.7 부터 ClangFormat이 지원된다.메뉴는 Tools -> Options -> Text Editor -> C/C++ -> Formatting 에 있다.많이 사용되는 애들은 디폴트로 지정할 수 있고 커스텀 파일도 사용할 수 있는 모양이다.Google, Chromium 등의 스타일을 사용한다면 아래 Tabs 옵션을 수정하면 더 정확하게 사용할 수 있다근데 MFC 등 Precompiled Headers 를 기본적으로 사용하는 프로젝트에 Chromium이나 Google 스타일을 적용하면 .cpp/.cc 파일의 가장 상단에 위치해야 하는 #include "stdafx.h" 를 자동으로 조정하여 다른 헤더보다 아래쪽에 위치하게 된다. 이걸 해결하는 방법을 찾아보려고 했는..
[c++] 4가지 캐스팅(static_cast, const_cast, reinterpret_cast, dynamic_cast) Casting C++에서 기존 C스타일의 캐스팅을 사용할 수 있지만 C++의 4가지 캐스팅 방법을 사용하는 것이 많은 타입 검사를 해주기 때문에 더 안전하게 사용할 수 있다. const_cast const 변수의 상수 속성을 없앨 때 사용한다. const 속성이 있는 변수는 const 속성을 계속 유지하는게 올바르기 때문에 왠만하면 사용할 일이 없다. void foo(int a) { // blah blah ~~ } const int a = 1; Foo(const_cast(a)); static_cast 가장 일반적인 타입 변환. 런타임 타입 검사는 하지 않는다. 업캐스팅, 다운캐스팅 모두 가능하다. double a = 1.1; int b = static_cast(a); reinterpret_cast C++..
[c++11] delete - 대입 연산 및 값 전달 차단 클래스의 동적 메모리 할당 시 빈번하게 발생하는 문제들(ex. dangling pointer)을 회피하는 가장 좋은 방법은 복사 및 대입을 막아버리는 것이다. class Foo { public: Foo(int data); Foo(const Foo& src) = delete; ~Foo(); Foo& operator=(const Foo& rhs) = delete; } c++11부터 추가된 delete 키워드를 통해 막을 수 있다. 복사 또는 대입 연산이 발생하면 컴파일 시 에러가 발생한다.
Vcpkg로 설치한 cpprestsdk의 오류 ErrorLNK2019unresolved external symbol "__declspec(dllimport) public: __cdecl등의 오류를 내뿜는데 해결 방법은 아래 lib들을 링크해면 되고#pragma comment(lib, "winhttp.lib")#pragma comment(lib, "crypt32.lib")#pragma comment(lib, "bcrypt.lib")stdafx.h 와 같은 곳에 _NO_ASYNCRTIMP를 정의해주면 된다.#define _NO_ASYNCRTIMP근데 bcrypt는 vista 이상부터 사용이 가능해서... XP를 지원하려면 그냥 빌드해서 쓰는게 나을 것 같다.
[c++11/14]Lambda 람다 표현식[ 캡쳐 블록 ] ( 파라미터 목록 ) mutable exception 목록 속성 지정 -> 리턴 타입 { 함수 몸체 } 기본적인 람다 표현식12345auto basic_lambda = [] { std::cout