source_location — std::source_location
source_location — std::source_location
std::source_location 클래스는 **소스 코드에 대한 정보(파일 이름, 줄 번호, 열, 함수 이름)**를 나타내요. C++20에서 도입됐어요. <source_location> 헤더에 있어요.
디버깅·로깅·진단 메시지에 호출 위치를 자동으로 포함시킬 때 사용해요.
출처: cppreference
본문
// <source_location> 헤더, C++20
struct source_location;
사용 예
#include <source_location>
#include <iostream>
void log(const std::string& msg,
const std::source_location& loc =
std::source_location::current()) {
std::cout << loc.file_name() << ":" << loc.line()
<< " [" << loc.function_name() << "] " << msg << '\n';
}
int main() {
log("hello"); // 호출 위치가 자동 기록됨
}
주요 멤버
| 멤버 | 설명 |
|---|---|
current() |
현재 호출 위치 반환 (정적) |
file_name() |
파일 이름 |
line() |
줄 번호 |
column() |
열 번호 |
function_name() |
함수 이름 |
기본 인자로 활용
std::source_location::current()를 기본 인자로 쓰면, 호출 지점의 정보를 자동으로 캡처할 수 있어요.
void debug_print(const std::source_location loc =
std::source_location::current()) {
std::cout << loc.function_name() << " @" << loc.line() << '\n';
}
void foo() { debug_print(); } // "foo @<user line>"
특징
- 매크로(
__FILE__,__LINE__)보다 타입 안전하고 유연해요. - 로깅·assert·예외 메시지 등 진단 코드에 위치 정보를 깔끔하게 포함.
std::source_location은 함수가 호출된 소스 위치를 자동으로 얻어, 로깅과 진단을 개선하는 C++20 표준 타입이에요.