#define define_msg 은 define_msg를 정의한다고 전처리기에게 알리는 것이다. #ifndef define_msg 은 전처리기에게 define_msg가 정의안되어 있다면, #endif 까지 "코드 인스턴스화" 하라는 뜻이다. #endif 는 #if??? 에서 여기까지 끝난 다는 뜻이다. #ifndef 와 #endif 는, 코드를 인스턴스화 할지 안할지를 결정하는데 많이 쓰이는데, 어제 이것 때문에 고생 꽤나 했었다. 다른곳에서 define 정의되어 있는지도 모르고, 다른 곳에서 버그를 고치려 했으니, "종로에서 뺨맞고 한강가서 화풀이 한다."를 한 꼴이다. 이 문제를 해결하기 위해서, 예전에 공부했다가, 어떤 사람이 했던 한가지 대안이 떠올랐다. 바로 파일 이름명을 이용하여, #defi..
연구실 검색 결과
처음 코딩을 하게 되었을 때, 디버깅의 중요성에 대해서 전혀 모르고 있었다. 어느날 버그는 꼬였고, 중단점을 매우 많이 찍으면서 버그 사냥에 몰두하는 나 자신을 보게 되었다. 이것은 .. 디버깅은 정말 정말 중요하다는 사실을 깨닫게 해준 경험이였다. 디버깅을 위해 F9 키를 누르는건 친근한 작업이었고, 보다 더 한눈에 들어왔으면 좋겠다는 생각이 들기 시작했다. 결국 옵션에 이런것이 있지 않을까? 란 궁금증이 들게 되었고, ... 옵션을 가게 된다. 위 그림에서 "도구" 를 클릭한다. 위와 같은 화면이 뜨면 옵션을 클릭 한다. 다음과 같은 화면이 나오면, "디버깅 탭"으로 이동 한다. "디버깅 탭"에서 "일반 탭" 으로 이동 한다. 이 곳의 세부 설정중 "중단점과 현재 문의 전체 소스 줄 강조 표시" 를 ..
이 문제는 매우 간단한 사실을 알지 못한채 생겼던 문제였다. 1개의 솔루션 내에 3개의 프로젝트가 있었다. 3개의 프로젝트 A_project ... C_project 라고 했을 때. A_project 에는 pragma comment(lib, "../lib/lua5.1.lib") B_project 에는 pragma comment(lib, "../loost/lib/loost.lib") C_project 에는 pragma comment(lib, "../lib/lua5.1.lib") 이렇게 작업 하던 중이였다. C 프로젝트로 컴파일 하는 과정중 B 프로젝트의 loost.lib 를 찾을 수 없다는 경고가 나왔다. 아무리 상대 주소를 생각해 봐도 B 프로젝트 입장에서 보면 ../loost/lib/loost.lib ..
바인드 성능 테스트 : update 2014.06.12 Bind는 언제 사용 해야 하는가? bind 자체는 성능 향상이 아닌, 생산성 향상을 위한 유틸리티라고 나는 생각한다. 왜냐하면 bind로 만든 콜백 등은 더 많은 수행 자원을 사용하기 때문이다. 60 frame 갱신 프로그램에서 10,000 객체가 각각 20번씩 호출 될 때, 초당 12,000,000번 호출 되는데, 바인딩 함수 호출만으로, 프레임 하락이 생긴다. 그러므로 이벤트 발생에 따른 콜백등에 사용하는게 제일 좋다. 테스트 환경 VS2012, Release이며, 결과는 32bit 실행 파일 테스트 코드 /* Boost Lib */ #include #include #include /* Stand Lib */ #include long long ..
http://www.gamedev.net/community/forums/topic.asp?topic_id=453957 http://www.sysbug.com/bbs/board/view.php?no=11&mode=&list_num=&page=2&page_count_frist=1&select=&keyword=&brdCode=board2 http://fallsky4.springnote.com/pages/1333674 이 모든 경우를 종합해서 해결 했다. 쉽게 말한다면, WSARecv 의 5번째 파라미터인 플래그는 DWORD 의 포인터 만을 받아 들인다. 편하게 하기 위해서 상수 0 이나, NULL 로 주었을 때 10014 에러 코드를 반환 하게 된다.
Bind 는 임의의 함수 포인터나 함수에 국한되지 않고, 함수 객체도 bind 할 수 있게 해 준다. 이 함수 객체를 바인드 할 경우 operator() 의 리턴 타입을 명시적으로 bind 함수에 알려 줘야 한다. #include struct F { int operator()(int a, int b) { return a - b; } bool operator()(long a, long b) { return a == b; } }; int main( void ) { F f; int x = 104; bind(f, _1, _1)(x);// f(x, x), i.e. zero return 0; } 이 처럼 bind(...) 을 지정해 주어야 bind 함수는 객체를 생성 할 수 있게 된다. 여기서 유심히 봐야 할 부분..
최근댓글