[[User:Bluegol|Bluegol]] ([[User talk:Bluegol|talk]]) 00:58, 13 January 2013 (KST)
== MS 확장 중 사용할 것 ==
- override
- local struct/class를 펑터로 사용하기
- warning 무시 예.
** #pragma warning( push )
** #pragma warning( disable : 4996 )
** #include <boost/iostreams/device/file.hpp>
** #pragma warning( pop ) - VS 2008 SP1의 std::tr1 녀석들…
- stdafx.h
** 잘 사용하면 컴파일 시간이 화악~ 준다. - 타입 관련
** DWORD, BYTE, …등은 win api 때문에 사용할 수 밖에~ 그러나 win api와 관련 없는 부분에는 되도록 피할 것
** int8_t, int_16t, …
*** vs2010에는 있다.
*** 없으면 정의해서 쓰자. ms specific은 __int8, etc.
** char* vs void* : 버퍼는 당연히 char로 써야 한다. void는 오로지 아규먼트 패싱용 - _countof 마크로: 어레이의 사이즈 리턴. MS 확장인듯 한데 편함. stdlib.h
==스탠다드 라이브러리 (or lack thereof)==
- wchar_t의
에 해당하는 펑션들 - “secure” 펑션들. (memcpy_s, etc.)
** MS: std::copy 쓰면 지지. 이걸 어쩔? - assert
** 스탠다드와 MS
*** Standard와 MS 모두 NDEBUG를 디파인하면 동작 안 하도록 되어 있다.
*** cf. The assert routine is available in both the release and debug versions of the C run-time libraries. Two other assertion macros, [http://msdn.microsoft.com/en-us/library/ezb1wyez(v=vs.71).aspx _ASSERT] and [http://msdn.microsoft.com/en-us/library/ezb1wyez(v=vs.71).aspx _ASSERTE], are also available, but they only evaluate the expressions passed to them when the [http://msdn.microsoft.com/en-us/library/0b98s6w8(v=vs.71).aspx _DEBUG] flag has been defined.
*** cf. MS [http://msdn.microsoft.com/en-us/library/8hyw4sy7(v=vs.80).aspx _CrtDbgReportW] 버그…랄까 feature랄까. %만 찍으려 하면 죽는다!
**** 예. _ASSERTE( a % 3 == 0 );
** desideratum
*** 메시지를 같이
**** 그냥 스탠다드 assert로 쓰고, “&& message” 형태로 쓴다? 메시지 만들기 좀 귀찮다!
**** 메시지 등을 인자로 받으면 스탠다드와 충돌!
**** 무엇이 좋을까 선택의 문제…
*** 로그도 찍히게
*** 메시지 박스/로그 각각을 선택 가능하게
==마크로들==
- min, max가 std::min, std::max를 방해한다! undef 해 버리자!
- 기타 ~”A”로 가는 것들 걸리적 거리면 undef!