
4편: DECLARE_PROPERTY – 반복되는 getter/setter 자동화객체지향에서 캡슐화는 중요한 원칙입니다.하지만 private 멤버 + public getter/setter 패턴은 너무 반복적이라 지겹죠.그래서 등장하는 것이 DECLARE_PROPERTY 같은 매크로입니다.😫 반복되는 getter/setterclass Person {private: std::string m_name;public: const std::string& GetName() const { return m_name; } void SetName(const std::string& name) { m_name = name; }};위 코드를 모든 속성마다 계속 작성한다면 생산성이 떨어지고, 실수도 많아집니다.?..

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..
- Total
- Today
- Yesterday
- C#.NET
- C# 고급 기술
- ip
- 블루버블
- 서귀포
- 현포다이브
- Linux
- CMake
- 울릉도
- 서귀포블루버블
- 스쿠버다이빙
- C
- OpenSource
- DLL
- 외돌개
- Sleep
- 블루버블다이빙팀
- C#
- Windows
- 블루버블다이브팀
- Build
- 패턴
- PowerShell
- 윈도우
- 성산블루버블
- 리눅스
- Thread
- 암호화
- C++
- 제주도
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |