티스토리 뷰
728x90
반응형
🔍 UNREFERENCED_PARAMETER 매크로를 꼭 써야 하는 이유
"이 매개변수 안 쓰는데… 지워도 되나?"
"경고가 자꾸 뜨네? 어떻게 없애지?"
이런 고민, 한 번쯤 해보셨죠?
C/C++ 코딩을 하다 보면 함수 시그니처에 선언된 매개변수를 사용하지 않는 경우가 종종 생깁니다.
이럴 때 등장하는 게 바로 👉 UNREFERENCED_PARAMETER(x)
매크로입니다.
⚠️ 문제 상황
void OnEvent(int eventCode, void* pContext)
{
// 아직 pContext를 사용하지 않음
HandleEvent(eventCode);
}
Visual Studio에서는 이렇게 경고가 뜹니다:
warning C4100: 'pContext': unreferenced formal parameter
✅ 해결 방법: UNREFERENCED_PARAMETER
void OnEvent(int eventCode, void* pContext)
{
UNREFERENCED_PARAMETER(pContext);
HandleEvent(eventCode);
}
🔧 정의는 간단합니다:
#define UNREFERENCED_PARAMETER(P) (void)(P)
컴파일러에게 "이 파라미터는 일부러 안 쓰는 거야"라고 알려주는 효과를 줍니다.
🧭 플랫폼 호환을 위한 매크로 정의
Windows에선 <Windows.h>
에 이미 정의돼 있지만, Linux/Unix 환경에선 직접 정의해줘야 합니다.
🎯 안전한 매크로 정의 방법:
#ifndef UNREFERENCED_PARAMETER
#define UNREFERENCED_PARAMETER(P) (void)(P)
#endif
이 코드를 공용 헤더에 넣어두면 윈도우/리눅스 양쪽 환경 모두 대응 가능합니다.
📌 왜 굳이 이걸 써야 할까?
1. 컴파일러 경고 제거
Visual Studio에서는 사용하지 않는 매개변수에 대해 C4100
경고를 발생시킵니다.
2. 코드 의도 표현
UNREFERENCED_PARAMETER(pContext);
→ 일부러 무시하고 있다는 것을 명확히 표현할 수 있습니다.
3. 콜백 함수/인터페이스 대응
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
...
}
필요 없어도 지울 수 없고, 경고는 피하고 싶을 때 꼭 필요한 매크로입니다.
🧠 정리
이유 | 설명 |
---|---|
✅ 경고 제거 | Visual Studio의 C4100 경고 제거 |
✅ 명확한 의도 표현 | 일부러 안 쓰는 매개변수임을 명시 |
✅ 콜백/인터페이스 대응 | 사용하지 않더라도 시그니처 고정 필요 |
✅ 유지보수에 유리 | 향후 사용 가능성을 열어둠 |
✅ 크로스 플랫폼 대응 | 직접 정의하면 Windows/Linux 모두 사용 가능 |
✍️ 마무리 한 줄 요약
UNREFERENCED_PARAMETER는 단순한 경고 제거용이 아닙니다.
코드의 의도를 명확히 드러내는 좋은 습관이자, 유지보수성을 위한 장치입니다.
728x90
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C++
- ReFS
- 블루버블다이빙팀
- 블루버블
- Windows
- CMake
- C#.NET
- 제주도
- 리눅스
- 외돌개
- Thread
- C#
- 스쿠버다이빙
- 윈도우
- 패턴
- DLL
- 서귀포블루버블
- 성산블루버블
- OpenSource
- 서귀포
- 현포다이브
- C
- PowerShell
- Linux
- 블루버블다이브팀
- ip
- Build
- 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 |
글 보관함