포함(include)하는 파일이 존재하는지 확인하는 프리프로세서 기능이다.
아래는 optional 파일이 존재하는지 확인한다.
#if __has_include(<optional>)
#include <optional>
#endif
혹은
#if __has_include("optional")
#include "optional"
#endif
더 읽기
static_assert는 C++11에서 생긴 기능으로 컴파일 타임에 식의 true, false 여부를 조사해서 false인 경우 지정한 에러 메시지를 출력한다. static_assert(a == b, "a와b는 같아야 한다"); C++17에서는 static_assert 에 에러 메시지 지정을 하지 않아도 괜찮다. static_assert(a == b); 식이 false 일 때 어떤...
더 읽기
출처 Windows의 윈도우 관련 프로그래밍을 할 때 반드시 나오는 윈도우 프로시저이지만, 윈도우 프로시저 외부에 그대로 예외를 던지려하면 무시되거나 프로세스를 강제 종료하는 것이 MSDN의 WindowProc callback function의 Remarks에 적혀 있다. WindowProc callback function 그래서 C++11에서 추가된 std::exception_ptr에 윈도우 프로시저의 예외를 일단...
더 읽기
출처 전제 최신 msbuild가 필요하다. VisualStudio 2017 Community Edition을 설치하면 자동으로 설치 될 것이다. 경로가 통하지 않는 경우 다음 명령을 실행 msbuild을 사용할 수 있게하자. set PATH=%PATH%;%PROGRAMFILES(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin UTF-8에 대한 대응 방법 UTF-8을 지원하려면 다음 단계를 취할 필요가 있다....
더 읽기
출처 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...
더 읽기
Application.ThreadException 이벤트 사용 Windows Form 애플리케이션에서는 잡지 못한 예외가 throw 되면 Application.ThreadException 이벤트가 발생한다. 단 ThreadException 이벤트가 발행할 수 있는 부분은 Windows Form 작성, 소유하고 있는 스레드(UI 스레드)에서 예외가 throw 될 때이다. Thread.Start 메소드나 BeginInvoke 메소드 등에서 시작된 스레드에서 발생한...
더 읽기
GetQueuedCompletionStatus 이전 사용 코드 //CompletionKey를 받을 포인터 변수 stClientInfo* pClientInfo = NULL; //함수 호출 성공 여부 BOOL bSuccess = TRUE; //Overlapped I/O작업에서 전송된 데이터 크기 DWORD dwIoSize = 0; //I/O 작업을 위해 요청한 Overlapped 구조체를 받을 포인터 LPOVERLAPPED lpOverlapped =...
더 읽기
오랜된 Windows(아마 Windows Vista 이전)에서는 Winsock 확장 함수를 사용하기 위해서는 확장 함수의 함수 포인터를 가져와야 사용할 수 있었다. 예를들면 AcceptEx의 경우는 아래처럼 해야 사용할 수 있었다. static LPFN_ACCEPTEX mFnAcceptEx; GUID guidAcceptEx = WSAID_ACCEPTEX ; if (SOCKET_ERROR == WSAIoctl(mListenSocket, SIO_GET_EXTENSION_FUNCTION_POINTER, &guidAcceptEx,...
더 읽기
GitHub
에서 소스 코드를 받는다.
소스 코드의 root 디렉토리에 vcbuild.bat 파일이 있다.
콘솔 창을 열어서 vcbuild.bat을 실행한다.
사전에 Visual Stuido가 먼저 설치 되어 있어야 한다.
vcbuild.bat 이 있는 root 디렉토리에 uv.sln가 생성 되어 있다.
더 읽기
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
더 읽기