효율적으로 디버깅하기 SEH와 minidump

다음과 같은 소스 코드가있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <iostream> #include <Windows.h> #include <chrono> #include <mutex> #include <DbgHelp.h> int main() {     try {         int* A = NULL;         *A = 100;     }     catch (… ) {         std::cout << “hello world” << std::endl;     } } Colored by Color Scripter cs auto;”>이 예제는  access violation의 한 예이다. 해당 예제를 더보기…

글쓴이 kudwafter,

C++ std::function 구현에 대해

오래전부터 std::function에 대해 꽤 궁금해왔다. 그 이유는 std::function<int(void)> 이런 형태이기 때문이다. 이를 어떻게 만들려면 어떻게 해야하나 맨첨에 생각할때는 다음과 같이 생각하였지만. 이는 내가 원하는 방식이 아니므로 넘어갔다. 1 2 3 4 5 6 template <typename T, typename… Args> class function{ } Colored by Color Scripter cs 비주얼 스튜디오에는 std::function코드는 다음과 같다. 1 2 3 4 더보기…

글쓴이 kudwafter,

32비트와 64비트를 따로 제공하는 라이브러리를 통합시키기

제가 자주 쓰는 기법이긴한데 큰 도움이 될지 모르겠지만 한번 올려본다. 이 기법을 자주 쓰는 큰예로 mysql있는데 mysql Connector라이브러리을 보자면 32비트와 64비트가 따로 있다. 이 말은 프레임워크 제작시 32비트 64비트라이브러리를 지원하기위해 거의 99%동일한 소스파일을 프로젝트 풀더에 모든 버전의 라이브러리를 전부 넣어야 한다는 의미이다. 나는 아래와 같은 해결방법으로 이 문제를 해결한다.   더보기…

메타프로그래밍으로 소수구별과 응용

메타프로그래밍이란 흔히 컴파일타임에 프로그램이 돌았던거를 컴파일타임를 연산을 시켜 런타입 시간을 줄이는 기술이다. 이 기술은 템플릿이라는 거를 응용해서 만든 기술이다. 템플릿은 기본적으로 컴파일 타입때 타입체킹등 값을 미리 넣는 작업을 한다. 소수 구하는 함수는 다음과  같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 더보기…

type traits로 is_class 구현하기

C++에는 type traits라는게 있다. 이는 컴파일 타입에 타입의 traits을 알기위해 사용한다. 간단한 예로 같은 타입인지 구하기 위해서는 이렇게 작성했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 struct true_type { enum {value  = true}; }; struct false_type { enum { value = false }; }; template<typename T, typename U> 더보기…

C++ Template Template parameters

제목을 보면 알다시피 C++에서의 template 이 아닌 template 이란 단어가 하나 더 붙었다. 이 template template 이란 말그대로 template 안에 또 template 이 있다는 의미이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 더보기…

글쓴이 kudwafter,

C++ 복사 연산자에 template 사용하기

퍼펙트 포워딩을 하기위해 복사연산자에 template을 사용할려고 아래와 같은 코드가 나옵니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class C { public:     C() {} template <typename T>     C(T const&)     { std::cout << “tmpl copy constructor\n”;     } }; int main() {     C a;     C b{ a }; } Colored by Color Scripter 더보기…

글쓴이 kudwafter,