C++17 - __has_include

포함(include)하는 파일이 존재하는지 확인하는 프리프로세서 기능이다. 아래는 optional 파일이 존재하는지 확인한다. #if __has_include(<optional>) #include <optional> #endif 혹은 #if __has_include("optional") #include "optional" #endif
더 읽기

C++17 - static_assert의 에러 메시지 생략 가능

static_assert는 C++11에서 생긴 기능으로 컴파일 타임에 식의 true, false 여부를 조사해서 false인 경우 지정한 에러 메시지를 출력한다. static_assert(a == b, "a와b는 같아야 한다"); C++17에서는 static_assert 에 에러 메시지 지정을 하지 않아도 괜찮다. static_assert(a == b); 식이 false 일 때 어떤...
더 읽기

C++11 - std::exception_ptr 사용하기

출처 Windows의 윈도우 관련 프로그래밍을 할 때 반드시 나오는 윈도우 프로시저이지만, 윈도우 프로시저 외부에 그대로 예외를 던지려하면 무시되거나 프로세스를 강제 종료하는 것이 MSDN의 WindowProc callback function의 Remarks에 적혀 있다. WindowProc callback function 그래서 C++11에서 추가된 std::exception_ptr에 윈도우 프로시저의 예외를 일단...
더 읽기

C++ - Visual C++에서 UTF-8 소스 코드를 사용하는 방법

출처 전제 최신 msbuild가 필요하다. VisualStudio 2017 Community Edition을 설치하면 자동으로 설치 될 것이다. 경로가 통하지 않는 경우 다음 명령을 실행 msbuild을 사용할 수 있게하자. set PATH=%PATH%;%PROGRAMFILES(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin UTF-8에 대한 대응 방법 UTF-8을 지원하려면 다음 단계를 취할 필요가 있다....
더 읽기

C# - Unity와 .NET

출처 2016년 여름 Unity가 .NET Foundation에 참가 2017년 여름 Unity 2017.1 출시 .NET 3.5 Equivalent에 더하여 .NET 4.6 Equivalent가 Experimental로 선택할 수 있게 됨 2018년 초 여름 Unity 2018.1 출시 .NET 4.x Equivalent가 Experimental에서 안정 버전으로 2018년 겨울 Unity 2018.3...
더 읽기

C# - 잡지 못한 예외 처리

Application.ThreadException 이벤트 사용 Windows Form 애플리케이션에서는 잡지 못한 예외가 throw 되면 Application.ThreadException 이벤트가 발생한다. 단 ThreadException 이벤트가 발행할 수 있는 부분은 Windows Form 작성, 소유하고 있는 스레드(UI 스레드)에서 예외가 throw 될 때이다. Thread.Start 메소드나 BeginInvoke 메소드 등에서 시작된 스레드에서 발생한...
더 읽기

IOCP 관련 확장 함수 사용 준비

오랜된 Windows(아마 Windows Vista 이전)에서는 Winsock 확장 함수를 사용하기 위해서는 확장 함수의 함수 포인터를 가져와야 사용할 수 있었다. 예를들면 AcceptEx의 경우는 아래처럼 해야 사용할 수 있었다. static LPFN_ACCEPTEX mFnAcceptEx; GUID guidAcceptEx = WSAID_ACCEPTEX ; if (SOCKET_ERROR == WSAIoctl(mListenSocket, SIO_GET_EXTENSION_FUNCTION_POINTER, &guidAcceptEx,...
더 읽기

C++ - libuv - Visual Stuido 솔루션 파일 만들기

GitHub 에서 소스 코드를 받는다. 소스 코드의 root 디렉토리에 vcbuild.bat 파일이 있다. 콘솔 창을 열어서 vcbuild.bat을 실행한다. 사전에 Visual Stuido가 먼저 설치 되어 있어야 한다. vcbuild.bat 이 있는 root 디렉토리에 uv.sln가 생성 되어 있다.
더 읽기

git - submodule 사용 예

C++ 오프소스 라이브러리 googletest를 submodule로 설치 후 커밋하기 cd helloworld mkdir third_party cd third_party/ git submodule add git@github.com:google/googletest.git gtest cd gtest git checkout release-1.8.1 git add ../../../.gitmodules git commit
더 읽기