Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

[태그:] C++

시스템에서 드라이브 추가 혹은 제거되었을 때를 자동으로 감시하는 코드

DarkKaiser, 2007년 6월 20일2023년 9월 4일

출처 : http://www.codeproject.com/useritems/Drive_Detect.asp

시스템에서 플로피/하드/CD-ROM/이동 드라이브가 추가 혹은 제거되었을 때를 자동으로 감시하는 코드입니다. 우선 헤더 파일을 프로젝트에 추가하여 줍니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <dbt.h
#include <dbt.h
#include <dbt.h

아래의 메시지 핸들러를 추가합니다. 클래스 위저드를 통해서 추가할 수 없으니 수동으로 추가하여 주세요.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
bool inline IsBitSet (DWORD64 dwMask, UINT nTHBit) {
DWORD64 dwBit = 1;
dwBit <<= nTHBit;
dwMask
bool inline IsBitSet (DWORD64 dwMask, UINT nTHBit) { DWORD64 dwBit = 1; dwBit <<= nTHBit; dwMask
bool inline IsBitSet (DWORD64 dwMask, UINT nTHBit) {
    DWORD64 dwBit = 1;
    dwBit <<= nTHBit;
    dwMask 
Continue Reading

mutable 키워드

DarkKaiser, 2007년 6월 12일2023년 9월 4일
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class CTextBlock {
public:
std::size_t length() const;
private:
mutable std::size_t textlength;
mutable bool lengthIsValid;
}
std::size_t CTextBlock::length() const
{
if (!lengthIsValid) {
textLength = std::strlen(pText); // 문제 없습니다.
lengthIsValid = true; // 문제 없습니다.
}
}
class CTextBlock { public: std::size_t length() const; private: mutable std::size_t textlength; mutable bool lengthIsValid; } std::size_t CTextBlock::length() const { if (!lengthIsValid) { textLength = std::strlen(pText); // 문제 없습니다. lengthIsValid = true; // 문제 없습니다. } }
class CTextBlock {
public:
   std::size_t length() const;

private:
   mutable std::size_t textlength;

   mutable bool lengthIsValid;
}

std::size_t CTextBlock::length() const
{
   if (!lengthIsValid) {

      textLength = std::strlen(pText);  // 문제 없습니다.

      lengthIsValid = true;             // 문제 없습니다.
   }
}

mutable는 비정적 데이터 멤버를 비트수준 상수성의 족쇄에서 풀어주는 키워드입니다

Continue Reading

volatile 저장소

DarkKaiser, 2007년 6월 12일2023년 9월 4일

컴파일러의 최적화에 따라서는, 변수 N의 값을 다시 변수 N에 저장하는 대신 하나의 레지스터에 남겨 둘 수도 있다. 이런 문제를 컴파일러 최적화 옵션들을 변경하는 식으로 해결하는 것은 코드 전반의 성능에 나쁜 영향을 미칠 수 있다. 올바른 해법은 ANSI C의 volatile 저장소 한정사를 사용하는 것이다. volatile 한정사는 컴파일러에게 변수의 값이 언제라도 바뀔

Continue Reading

pragma의 어원

DarkKaiser, 2007년 6월 12일2023년 9월 3일

이거 궁금하신 분들이 만으리라 생각됩니다.

유래가 Ada까지 거슬러 가는군요. (http://archive.adaic.com/standards/83rat/html/ratl-02-01.html)

pragma, 그리스어로 action 이라는 뜻이군요. 컴파일러에게 특별한 방법으로 action을 취하라는 프리프로세서와 유사한 녀석이죠^^

저의 의문 하나가 풀리는 순간입니다. [커닝헌 책에]

PP233, A12.8 Pragmas

Continue Reading

실수형에서 정수형 형변환 성능 높이기

DarkKaiser, 2007년 6월 12일2023년 9월 4일
일반적으로 실수형에서 정수형으로 형변환을 하는 경우가 종종 있다. 이때 보통 묵시적으로 컴파일러가 알아서 해 줄수 있지만 이렇게 할 경우에 속도가 상당히 느리다. 한두번은 빠르게 느껴져도 이게 백만번, 천만번일 경우 형변환 부분에서 전체 함수의 90%까지 잡아먹을 수도 있다. 이럴경우 아래의 코드를 이용하여 성능을 30% 정도 끌어올릴 수 있다.
이때, 주의할 점은
Continue Reading

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    AutoExp.dat CppUnit CreateFile CVS Detours Generic ignore파일 Installer Isolation level LogCat OSI OSI 7 layer PRODUCTION_MODE request RunInstaller Runnable SafeInt session setPoperty startWebLogic.cmd STL synchronized TAB time_t VC Vector VS2005 날짜 디버깅 리치에디트컨트롤 매핑모드 문서화 주석 변환 사설 IP 성능 주석 트랜젝션 트리 프로젝트관리 프로파일러 픽셀 형변환 형식 확장자 히스토그램

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2025 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes
    DarkKaiser의 블로그
    DarkKaiser의 블로그
    • 개발 관련 자료(노션)
    • Raspberry Pi(노션)
    • WD My Cloud(노션)
    • GitHub