
3편: MSLEEP, SSLEEP – 간단한 Sleep 매크로 정의하기C++에서는 스레드를 잠시 멈추기 위해 std::this_thread::sleep_for를 사용하는 것이 일반적입니다.하지만 매번 std::chrono::milliseconds() 를 타이핑하는 건 지저분하고 반복적이죠.📌 목표: 더 읽기 쉽고, 반복을 줄이며, 명확한 단위 구분이 가능한 슬립 매크로 정의🛠️ 매크로 정의#ifndef MSLEEP#define MSLEEP(var) { std::this_thread::sleep_for(std::chrono::milliseconds((var))); }#endif#ifndef SSLEEP#define SSLEEP(var) { std::this_thread::sleep_for(std::ch..

2편: SAFE_DELETE / SAFE_DELETE_ARR – 안전한 포인터 메모리 해제✅ 문제 상황C++에서는 new로 생성한 메모리를 반드시 delete로 해제해야 합니다. 하지만 실수로 중복 delete를 하거나 delete 후 포인터를 그대로 두면, 이중 해제 (double free) 나 뎅글링 포인터 (dangling pointer) 문제가 생깁니다.🧯 해결 방법: SAFE_DELETE 매크로#ifndef SAFE_DELETE#define SAFE_DELETE(var) { if ( (var) != nullptr ) delete (var); (var) = nullptr; }#endif#ifndef SAFE_DELETE_ARR#define SAFE_DELETE_ARR(var) { if ( (va..

📌 시리즈 개요C++ 코드를 작성할 때 자주 반복되는 패턴이나, 명시적인 의도 표현을 위해 매크로를 사용하는 경우가 많습니다. 이 시리즈에서는 실무에서 자주 사용하는 매크로들을 하나씩 소개하며, 언제, 왜, 어떻게 사용해야 하는지를 설명합니다.반복되는 코드는 버그의 온상이다. 하지만 잘 설계된 매크로는 우리의 날개가 된다.🧩 시리즈 목록🔹 1편: UNREFERENCED_PARAMETER – 사용하지 않는 매개변수를 안전하게 무시하기Visual Studio에서 발생하는 경고 제거 방법코드의 의도를 명확히 하기 위한 실전 예제Windows/Linux 호환을 위한 정의 방법1편: UNREFERENCED_PARAMETER – 사용하지 않는 매개변수 안전하게 무시하기🔹 2편: SAFE_DELETE / SA..

🔍 UNREFERENCED_PARAMETER 매크로를 꼭 써야 하는 이유"이 매개변수 안 쓰는데… 지워도 되나?""경고가 자꾸 뜨네? 어떻게 없애지?"이런 고민, 한 번쯤 해보셨죠?C/C++ 코딩을 하다 보면 함수 시그니처에 선언된 매개변수를 사용하지 않는 경우가 종종 생깁니다.이럴 때 등장하는 게 바로 👉 UNREFERENCED_PARAMETER(x) 매크로입니다.⚠️ 문제 상황void OnEvent(int eventCode, void* pContext){ // 아직 pContext를 사용하지 않음 HandleEvent(eventCode);}Visual Studio에서는 이렇게 경고가 뜹니다:warning C4100: 'pContext': unreferenced formal paramet..

namespace util { class CryptoUtil { DECLARE_NO_COPY_CLASS( CryptoUtil ); public: CryptoUtil() = default; ~CryptoUtil() = default; static std::string GetMD5Hash( const std::string& _ssInput ); static std::string GetSHA256Hash( const std::string& _ssInput ); static std::string GetSHA512Hash( const std::string& _ssInput ); static std::string GetSHA1Hash( const std::string& _ssInput ); stati..
리눅스 C++ Signal 핸들러 클래스 (멀티스레드 기반) 1. 개요 이 문서는 리눅스 환경에서 시그널 처리 전용 클래스를 만들고, 별도의 스레드에서 안전하게 시그널을 처리하는 구조를 설명합니다. 2. 핵심 설계 시그널과 콜백을 등록하는 유연한 클래스 구조 핸들링은 별도 스레드에서 sigwaitinfo()로 처리 메인 스레드는 자유롭게 동작 가능 3. 클래스 헤더: SignalHandler.hpp #pragma once#include #include #include #include #include #include class SignalHandler {public: using Callba..
- Total
- Today
- Yesterday
- 블루버블다이브팀
- 패턴
- 서귀포
- CMake
- C# 고급 기술
- Windows
- 블루버블
- C++
- 리눅스
- 성산블루버블
- Thread
- PowerShell
- 서귀포블루버블
- 윈도우
- C
- C#.NET
- OpenSource
- C#
- ReFS
- Linux
- 암호화
- 제주도
- ip
- Build
- 블루버블다이빙팀
- DLL
- 울릉도
- 디자인패턴
- 스쿠버다이빙
- 현포다이브
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
29 | 30 |