어썸블로그, 개발자를 위한 블로그 뉴스 앱
'Programming' 카테고리의 다른 글
TypeScript, 타입에 대한 고찰 (0) | 2015.05.05 |
---|---|
시니어 프로그래머 (2) | 2015.02.03 |
Windows Runtime 이야기 (1) | 2014.12.05 |
눈물나는 그래프 (2) | 2014.08.25 |
방준영의 블로그 (0) | 2014.06.06 |
TypeScript, 타입에 대한 고찰 (0) | 2015.05.05 |
---|---|
시니어 프로그래머 (2) | 2015.02.03 |
Windows Runtime 이야기 (1) | 2014.12.05 |
눈물나는 그래프 (2) | 2014.08.25 |
방준영의 블로그 (0) | 2014.06.06 |
쉬는 날을 틈타 Build 2015 동영상을 다운 받아서 하나씩 보는 중이다. Async/Await 이라는 부제에 끌려서 들어갔는데, 이 제목은 낚시였고 TypeScript 에 대한 설명이 주를 이룬다.
TypeScript 자체에는 큰 관심이 없지만, 앤더스 헤일스벅이 타입이라는 것에 대해 그동안 고민해온 고찰을 들어볼 수 있었고 또 전설의 레전드가 직접 코딩하는 것을 구경하는 것만으로도 무척 즐겁게 봤다.
동영상은 아래 링크에서 볼 수 있다.
https://channel9.msdn.com/Events/Build/2015/3-644
어썸블로그, 개발자를 위한 블로그 뉴스 앱 (5) | 2017.02.21 |
---|---|
시니어 프로그래머 (2) | 2015.02.03 |
Windows Runtime 이야기 (1) | 2014.12.05 |
눈물나는 그래프 (2) | 2014.08.25 |
방준영의 블로그 (0) | 2014.06.06 |
블로그 이사했습니다.
시니어 프로그래머
보통 우리 나라 IT회사들의 평균 나이는 31-33세 인데 내 나이가 이제 우리 나이로 35살이니 평균 보다 조금 늙은(?) 나이인 것 같다.
jeho.page
어썸블로그, 개발자를 위한 블로그 뉴스 앱 (5) | 2017.02.21 |
---|---|
TypeScript, 타입에 대한 고찰 (0) | 2015.05.05 |
Windows Runtime 이야기 (1) | 2014.12.05 |
눈물나는 그래프 (2) | 2014.08.25 |
방준영의 블로그 (0) | 2014.06.06 |
아래 페이지로 포스팅 이전했습니다.
https://jeho.page/essay/2014/12/05/windows-runtime.html
Windows 유니버셜 앱 개발 경험담
꽤 오랫동안 윈도 프로그래밍에서 떨어져 살다가 윈도폰은 어떨지 궁금해서 문득 윈도폰 하나를 중고로 구입해본 적이 있었다. 그게 NT 커널이 올라가있는 윈도폰 8.0 이었다. 세컨드 폰으로 장
jeho.page
TypeScript, 타입에 대한 고찰 (0) | 2015.05.05 |
---|---|
시니어 프로그래머 (2) | 2015.02.03 |
눈물나는 그래프 (2) | 2014.08.25 |
방준영의 블로그 (0) | 2014.06.06 |
프로그래머의 5가지 성향 (0) | 2014.03.15 |
예전에 존 레식의 매일 매일 코딩하기라는 글을 본 기억이 문득 떠올라서 나도 내 Github 그래프를 한번 열어봤다.
8년이 되는 경력 동안 꾸준히 저 정도 그래프를 그린 것 같은데 기대만큼 실력은 늘지 않는 것 같다.
존 레식 같은 해커가 되려면 몇 년이나 이렇게 살아야 하는 걸까. 그래서 눈물나는 그래프.
시니어 프로그래머 (2) | 2015.02.03 |
---|---|
Windows Runtime 이야기 (1) | 2014.12.05 |
방준영의 블로그 (0) | 2014.06.06 |
프로그래머의 5가지 성향 (0) | 2014.03.15 |
프로그래밍의 첫 번째 규칙: It's Always Your Fault. (1) | 2014.03.06 |
내가 좋아하는 국내 프로그래밍 블로그들에서 살짝 언급했던 방준영의 블로그가 다시 돌아왔다.
최근에는 국내 프로그래밍 블로그들이 거의 전멸 하다시피 해서 해커뉴스만 울며 겨자먹기로 보면서(왜냐면 영어를 잘 못하기 때문에) 삶을 살아가고 있었는데, 이런 좋은 블로그가 돌아와줘서 정말 기쁘다.
이번에는 중간에 잠적(?)하지 않고 꾸준히 좋은 글들을 많이 써줘서 더 많은 사람들이 그의 블로그를 찾고, 나처럼 즐거움을 느꼈으면 좋겠다.
Windows Runtime 이야기 (1) | 2014.12.05 |
---|---|
눈물나는 그래프 (2) | 2014.08.25 |
프로그래머의 5가지 성향 (0) | 2014.03.15 |
프로그래밍의 첫 번째 규칙: It's Always Your Fault. (1) | 2014.03.06 |
윈도우즈 PE 파일의 구조 (0) | 2013.03.24 |
눈물나는 그래프 (2) | 2014.08.25 |
---|---|
방준영의 블로그 (0) | 2014.06.06 |
프로그래밍의 첫 번째 규칙: It's Always Your Fault. (1) | 2014.03.06 |
윈도우즈 PE 파일의 구조 (0) | 2013.03.24 |
윈도8에서의 UAC 관련 중요한 변화 (0) | 2012.05.28 |
방준영의 블로그 (0) | 2014.06.06 |
---|---|
프로그래머의 5가지 성향 (0) | 2014.03.15 |
윈도우즈 PE 파일의 구조 (0) | 2013.03.24 |
윈도8에서의 UAC 관련 중요한 변화 (0) | 2012.05.28 |
매크로의 가변인자를 또 다른 매크로로 넘기기 (0) | 2012.04.16 |
이미지 출처 https://code.google.com/p/corkami/wiki/PE101
엄청나게 잘 정리된 그림을 발견했다. 아름답지 아니한가.
프로그래머의 5가지 성향 (0) | 2014.03.15 |
---|---|
프로그래밍의 첫 번째 규칙: It's Always Your Fault. (1) | 2014.03.06 |
윈도8에서의 UAC 관련 중요한 변화 (0) | 2012.05.28 |
매크로의 가변인자를 또 다른 매크로로 넘기기 (0) | 2012.04.16 |
내가 좋아하는 국내 프로그래밍 블로그들 (11) | 2012.04.12 |
http://www.brianbondy.com/blog/id/140/
위 포스트를 읽고서 윈도8에 꽤 큰 변화가 생겼다는 것을 알았다.
지금까지는 UAC를 꺼둔다면 XP와 같은 환경이라고 생각해도 별 문제가 없었지만, 이제는 더 이상 아니라는 뜻.
If (IsUacDisabled())
{
}
만일 이런 이상한 얍삽이 코드를 즐겨 사용했다면, 이제 그 결정에 대해서 벌을 받을 시간이다.
프로그래밍의 첫 번째 규칙: It's Always Your Fault. (1) | 2014.03.06 |
---|---|
윈도우즈 PE 파일의 구조 (0) | 2013.03.24 |
매크로의 가변인자를 또 다른 매크로로 넘기기 (0) | 2012.04.16 |
내가 좋아하는 국내 프로그래밍 블로그들 (11) | 2012.04.12 |
CString 의 비밀 (6) | 2012.04.12 |
살다보면(?) 매크로에서 받는 가변 인자를 또 다른 매크로로 쑤셔넣고 싶은 경우가 있다.
#define MACRO_1(a, b, c) fn(a, b, c) #define MACRO(...) MACRO_1(__VA_ARGS__)
짠, 이렇게 하면 된다.
그렇다. 아무 테크닉이 필요없이 그냥 쑤셔넣으면 된다.
그런데 위 코드는 GCC에서는 잘 동작하지만 VC에서는 동작하지 않는다. 그렇다고 해서 가변인자는 다른 매크로로 건넬 수가 없구나 하고 오해하면 안된다. 이것은 그냥 비주얼 스튜디오의 버그일 뿐이다.
#define MACRO_1(a, b, c) fn(a, b, c) #define MACRO_1_(args_list) MACRO_1 args_list #define MACRO(...) MACRO_1_((__VA_ARGS__))
비주얼 스튜디오에서는 위와 같은 얍삽이를 통해서 이를 회피할 수 있다. __VA_ARGS__ 주위를 한 겹 더 괄호로 둘러싸서 또 다른 매크로로 넘기는 것을 주의해서 봐야한다.
그래서 내가 하고 싶은 말은,
이 버그가 정말 거지 같다고 생각된다면
http://connect.microsoft.com/VisualStudio/feedback/details/380090/variadic-macro-replacement
여기 가서 upvote를 해주세요.
윈도우즈 PE 파일의 구조 (0) | 2013.03.24 |
---|---|
윈도8에서의 UAC 관련 중요한 변화 (0) | 2012.05.28 |
내가 좋아하는 국내 프로그래밍 블로그들 (11) | 2012.04.12 |
CString 의 비밀 (6) | 2012.04.12 |
쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스 (0) | 2012.04.06 |
내 피드리더에는 등록되어있는 블로그가 700여개 쯤 있다.
그 중에는 새로운 글이 올라올 때마다 가슴이 설레는 몇몇 블로그들이 있다. 그 중 우리나라 저자가 운영하는 3개의 블로그를 소개하려고 한다.
1. 메아리 저널
정말 엄청난 실력을 가진 해커이다. 특정 플랫폼이나 언어에 상관없이 여러 주제로 재밌는 글을 쓴다. 가끔 기괴한 코드 골프 내용이 올라오기도 하는데 그런걸 쳐다보고 있다 보면 자괴감에 빠지기도 한다.
어쨌거나 나는 그의 글이 너무나도 좋아서 언젠가는 주말 이틀 동안 내내 방구석에 누워서 2004년부터인가 썼던 모든 글을 다 읽어본 적도 있었다. 가끔씩 이상한 오락실 얘기도 쓰고는 하는데 그런 글조차 재밌다. 블로그에 댓글로 피드백을 할 수가 없어서 애독자로서 좀 아쉽긴 하지만 본인이 그에 대해 많이 고민해 본 듯하니 어쩔 수 없는 일이다.
2. art.oriented
프로그래머가 몰랐던 멀티코어 CPU 이야기를 쓴 저자이다. 주로 윈도 프로그래밍이나 시스템 프로그래밍 이야기를 다루는데 글들이 재밌을 뿐더러 배울 점도 많다. 이 블로그 역시 거의 모든 글을 다 읽었다. 아마 프로그래밍 기술을 다루는 우리나라 블로그들 중 가장 피드백이 많이 왔다갔다 하고 방문자 수도 많은 블로그가 아닐까 싶다.
이 블로그는 비교적 최근에 알게되었다. 글들은 아주 오래전부터 꾸준히 작성되어 왔는데 써있는 글의 질과 양에 비해 일방문자수는 상당히 적다. 윈도 프로그래밍에 대해서만 다룬다. 윈도 역사에 대해서 글을 쓸 때는 레이몬드 첸을 보는 느낌이 들기도 한다. 철도와 종교 이야기도 종종 꺼내는데 나는 그런 주제는 관심이 없어서 건너 뛰고 읽는다.
그러고보니 이 블로그들 이상으로 예전에 정말 좋아했던 블로그가 있었다. 바로 방준영의 블로그. 2009년도 즈음이었던가? 어느 날 아침에 그의 블로그를 발견하고는 오아시스라도 발견한 것 처럼 기뻤던 날이 있었다. 거의 매일 같이 좋은 글들이 올라와서 정말 행복하게 읽어가고 있었는데 언제부터인가 새 글이 더 이상 올라오지 않았고 심지어는 기존에 썼던 글마저 사라져 버렸다. 안타까운 일이다. 준영님. 혹시라도 이 글을 보신다면 돌아와주세요. 엉엉.
나는 미투데이나 트위터가 싫다. 페이스북도 싫다. 이 잡 것들이 나오고 나서 사람들은 블로그에 글을 잘 쓰지 않는다.
돌아오라 블로거들이여. 맛집 블로거 말고 프로그래머들 말이여.
그럼에도 불구하고 영어 블로그는 여전히 좋은 블로그들이 엄청나게 많다. 하지만 영어 블로그를 읽는 것은 정말 고통스러운 일이다. 내 피드 리더에는 나중에 읽으려고 마킹해둔 글들이 잔뜩 쌓여있는데 그것들 대부분은 영어 포스트이다. 한 번 읽으려면 크게 심호흡부터 하며 각오를 단단히 하고는 한다. 그리고 나는 그렇게 심호흡을 자주 하지 않기 때문에 오늘도 마킹만 해두는 글들이 계속 늘어간다.
그러니 이렇게 우리말로 좋은 글을 써주는 사람들이 어찌 고맙지 않겠는가. 좋은 국내 블로그들이 더 많이 생겼으면 좋겠다.
윈도8에서의 UAC 관련 중요한 변화 (0) | 2012.05.28 |
---|---|
매크로의 가변인자를 또 다른 매크로로 넘기기 (0) | 2012.04.16 |
CString 의 비밀 (6) | 2012.04.12 |
쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스 (0) | 2012.04.06 |
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요? (0) | 2012.03.26 |
블로그 이전했습니다.
이전한 포스팅 주소
https://jeho.page/programming/2012/04/12/CString%EC%9D%98-%EB%B9%84%EB%B0%80.html
CString의 비밀
다음 코드를 실행시켜보면 "abc"가 잘 출력이 될까?
jeho.page
매크로의 가변인자를 또 다른 매크로로 넘기기 (0) | 2012.04.16 |
---|---|
내가 좋아하는 국내 프로그래밍 블로그들 (11) | 2012.04.12 |
쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스 (0) | 2012.04.06 |
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요? (0) | 2012.03.26 |
어떻게 함수의 undecorated name을 추측 할 수 있을까? (3) | 2012.02.12 |
블로그 이전
https://jeho.page/programming/2012/04/06/icopyhook.html
쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스
ICopyHook은 윈도에서 제공하는 COM 인터페이스이다. 이 인터페이스를 구현해서 시스템에 등록시키면 쉘을 통한 파일 오퍼레이션이 발생할 때 내가 설치해 놓은 코드가 실행되도록 할 수 있다.
jeho.page
내가 좋아하는 국내 프로그래밍 블로그들 (11) | 2012.04.12 |
---|---|
CString 의 비밀 (6) | 2012.04.12 |
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요? (0) | 2012.03.26 |
어떻게 함수의 undecorated name을 추측 할 수 있을까? (3) | 2012.02.12 |
왜 static 멤버 함수에는 const를 붙일 수 없을까? (0) | 2012.02.06 |
CString 의 비밀 (6) | 2012.04.12 |
---|---|
쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스 (0) | 2012.04.06 |
어떻게 함수의 undecorated name을 추측 할 수 있을까? (3) | 2012.02.12 |
왜 static 멤버 함수에는 const를 붙일 수 없을까? (0) | 2012.02.06 |
SetFilePointer 보다는 SetFilePointerEx를 사용해야 한다 (2) | 2012.01.16 |
쉘의 파일 오퍼레이션을 잡아챌 수 있는 ICopyHook 인터페이스 (0) | 2012.04.06 |
---|---|
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요? (0) | 2012.03.26 |
왜 static 멤버 함수에는 const를 붙일 수 없을까? (0) | 2012.02.06 |
SetFilePointer 보다는 SetFilePointerEx를 사용해야 한다 (2) | 2012.01.16 |
GetLastError 함수 사용의 흔한 실수 (0) | 2012.01.13 |
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요? (0) | 2012.03.26 |
---|---|
어떻게 함수의 undecorated name을 추측 할 수 있을까? (3) | 2012.02.12 |
SetFilePointer 보다는 SetFilePointerEx를 사용해야 한다 (2) | 2012.01.16 |
GetLastError 함수 사용의 흔한 실수 (0) | 2012.01.13 |
NTFS에서 Sparse 파일을 만들기 (3) | 2012.01.03 |
어떻게 함수의 undecorated name을 추측 할 수 있을까? (3) | 2012.02.12 |
---|---|
왜 static 멤버 함수에는 const를 붙일 수 없을까? (0) | 2012.02.06 |
GetLastError 함수 사용의 흔한 실수 (0) | 2012.01.13 |
NTFS에서 Sparse 파일을 만들기 (3) | 2012.01.03 |
16TB 크기의 파일을 만들어내려면 얼마나 오래 걸릴까? (0) | 2012.01.01 |
왜 static 멤버 함수에는 const를 붙일 수 없을까? (0) | 2012.02.06 |
---|---|
SetFilePointer 보다는 SetFilePointerEx를 사용해야 한다 (2) | 2012.01.16 |
NTFS에서 Sparse 파일을 만들기 (3) | 2012.01.03 |
16TB 크기의 파일을 만들어내려면 얼마나 오래 걸릴까? (0) | 2012.01.01 |
구조체의 패킹에 대한 이야기 (4) | 2011.12.19 |
SetFilePointer 보다는 SetFilePointerEx를 사용해야 한다 (2) | 2012.01.16 |
---|---|
GetLastError 함수 사용의 흔한 실수 (0) | 2012.01.13 |
16TB 크기의 파일을 만들어내려면 얼마나 오래 걸릴까? (0) | 2012.01.01 |
구조체의 패킹에 대한 이야기 (4) | 2011.12.19 |
프로그래머에게 가장 굴욕적인 순간은? (0) | 2011.12.19 |
GetLastError 함수 사용의 흔한 실수 (0) | 2012.01.13 |
---|---|
NTFS에서 Sparse 파일을 만들기 (3) | 2012.01.03 |
구조체의 패킹에 대한 이야기 (4) | 2011.12.19 |
프로그래머에게 가장 굴욕적인 순간은? (0) | 2011.12.19 |
C/C++ 코딩 스타일 이야기 (8) | 2011.10.24 |
NTFS에서 Sparse 파일을 만들기 (3) | 2012.01.03 |
---|---|
16TB 크기의 파일을 만들어내려면 얼마나 오래 걸릴까? (0) | 2012.01.01 |
프로그래머에게 가장 굴욕적인 순간은? (0) | 2011.12.19 |
C/C++ 코딩 스타일 이야기 (8) | 2011.10.24 |
레지스트리의 volatile 옵션 (0) | 2011.09.27 |
if (ptr)
{
// *ptr을 사용
}
16TB 크기의 파일을 만들어내려면 얼마나 오래 걸릴까? (0) | 2012.01.01 |
---|---|
구조체의 패킹에 대한 이야기 (4) | 2011.12.19 |
C/C++ 코딩 스타일 이야기 (8) | 2011.10.24 |
레지스트리의 volatile 옵션 (0) | 2011.09.27 |
알아두면 유용한 MoveFileEx 함수의 펜딩 옵션 (0) | 2011.07.17 |
Damn. We say "if it's raining, open your umbrella" and NEVER "if it's true that it's raining, take your umbrella"... Testing explicitely against boolean is as verbose and as un-natural as the second example
구조체의 패킹에 대한 이야기 (4) | 2011.12.19 |
---|---|
프로그래머에게 가장 굴욕적인 순간은? (0) | 2011.12.19 |
레지스트리의 volatile 옵션 (0) | 2011.09.27 |
알아두면 유용한 MoveFileEx 함수의 펜딩 옵션 (0) | 2011.07.17 |
메모리를 해제하기 전에 왜 널 체크를 하는걸까? (6) | 2011.05.29 |
프로그래머에게 가장 굴욕적인 순간은? (0) | 2011.12.19 |
---|---|
C/C++ 코딩 스타일 이야기 (8) | 2011.10.24 |
알아두면 유용한 MoveFileEx 함수의 펜딩 옵션 (0) | 2011.07.17 |
메모리를 해제하기 전에 왜 널 체크를 하는걸까? (6) | 2011.05.29 |
윈도우 드라이버를 만들 때 알아야 할 기초적인 내용들 (2) | 2011.05.23 |
C/C++ 코딩 스타일 이야기 (8) | 2011.10.24 |
---|---|
레지스트리의 volatile 옵션 (0) | 2011.09.27 |
메모리를 해제하기 전에 왜 널 체크를 하는걸까? (6) | 2011.05.29 |
윈도우 드라이버를 만들 때 알아야 할 기초적인 내용들 (2) | 2011.05.23 |
Duff's Device (0) | 2011.04.07 |
레지스트리의 volatile 옵션 (0) | 2011.09.27 |
---|---|
알아두면 유용한 MoveFileEx 함수의 펜딩 옵션 (0) | 2011.07.17 |
윈도우 드라이버를 만들 때 알아야 할 기초적인 내용들 (2) | 2011.05.23 |
Duff's Device (0) | 2011.04.07 |
_countof 매크로 (0) | 2011.03.15 |
알아두면 유용한 MoveFileEx 함수의 펜딩 옵션 (0) | 2011.07.17 |
---|---|
메모리를 해제하기 전에 왜 널 체크를 하는걸까? (6) | 2011.05.29 |
Duff's Device (0) | 2011.04.07 |
_countof 매크로 (0) | 2011.03.15 |
FIELD_OFFSET 매크로 (1) | 2011.03.01 |
send(to, from, count) register short *to, *from; register count; { register n = (count + 7) / 8; switch(count % 8) { case 0: do{ *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; } while(--n > 0); } }얼핏보면 switch 문장안에 do while 루프가 들어있는 것이 컴파일도 되지 않을 것처럼 보이지만 신기하게도 어느 컴파일러에서나 잘 컴파일된다.
switch(count & 7) { case 0 : goto lbl0; case 1 : goto lbl1; case 2 : goto lbl2; case 3 : goto lbl3; case 4 : goto lbl4; case 5 : goto lbl5; case 6 : goto lbl6; case 7 : goto lbl7; } lbl0: while(count > 0) { handle_one(); count--; lbl1: handle_one(); count--; lbl2: handle_one(); count--; lbl3: handle_one(); count--; lbl4: handle_one(); count--; lbl5: handle_one(); count--; lbl6: handle_one(); count--; lbl7: handle_one(); count--; }
do { *a = *b++; } while (--count > 0);위 코드에서 몇번이나 count가 0과 비교 되겠는가. b의 포인터 증가 연산은 몇번 일어나겠는가. 쉽다. count 번이다.
for(int i = 0; i < 100; i =+ 8) { *a = *b++; *a = *b++; *a = *b++; *a = *b++; *a = *b++; *a = *b++; *a = *b++; *a = *b++; }위처럼 루프를 풀어내는 것도 물론 가능하다. 그런데 숫자가 딱 나누어 떨어지지 않으면(위 예에서는 100 / 8) 나머지 처리를 밑에서 한번 더 해주어야 한다. Duff의 코드에서는 n을 (count + 7) / 8 로 정하고 case 구문의 숫자 위치를 적절히 배열하여 나머지 처리를 안해도 되도록 한 것이 중요한 포인트이다. 이렇게 하면 한방에 깔끔하게 처리할 수 있고 따라서 텍스트의 크기도 약간 더 작아진다. 사실 이 포인트가 C언어의 문법으로 범용적인 loop unrolling을 구현가능하게 하는 것이며 Duff's Device라고 불리는 아이디어이다.
메모리를 해제하기 전에 왜 널 체크를 하는걸까? (6) | 2011.05.29 |
---|---|
윈도우 드라이버를 만들 때 알아야 할 기초적인 내용들 (2) | 2011.05.23 |
_countof 매크로 (0) | 2011.03.15 |
FIELD_OFFSET 매크로 (1) | 2011.03.01 |
PAGED_CODE 매크로 (6) | 2011.02.27 |
포스팅 이전
https://jeho.page/essay/2011/03/15/_countof-%EB%A7%A4%ED%81%AC%EB%A1%9C.html
_countof 매크로
_countof 매크로는 배열의 원소 개수를 돌려주는 서비스 매크로이다. StringCchCopy나 strcpy_s 같은 함수들을 사용할 때 편리하게 사용할 수 있다.
jeho.page
윈도우 드라이버를 만들 때 알아야 할 기초적인 내용들 (2) | 2011.05.23 |
---|---|
Duff's Device (0) | 2011.04.07 |
FIELD_OFFSET 매크로 (1) | 2011.03.01 |
PAGED_CODE 매크로 (6) | 2011.02.27 |
디렉터리의 읽기 전용 속성 (4) | 2011.02.20 |