C ++ 20 std::source_location
C ++은 마침내 매크로가 아닌 옵션을 추가했으며 C ++ 20이 널리 퍼질 때 어느 시점에서 지배적 일 것입니다.
설명서는 다음과 같이 말합니다.
constexpr const char * function_name () const noexcept;
6 반환 값 :이 객체가 함수 본문의 위치를 나타내는 경우 함수 이름에 해당하는 구현 정의 NTBS를 반환합니다. 그렇지 않으면 빈 문자열을 반환합니다.
여기서 NTBS는 "Null Terminated Byte String"을 의미합니다.
지원이 GCC에 도착하면 GCC 9.1.0이 g++-9 -std=c++2a
지원하지 않을 때 시도해 보겠습니다 .
https://en.cppreference.com/w/cpp/utility/source_location 클레임 사용법은 다음과 같습니다.
#include <iostream>
#include <string_view>
#include <source_location>
void log(std::string_view message,
const std::source_location& location std::source_location::current()
) {
std::cout << "info:"
<< location.file_name() << ":"
<< location.line() << ":"
<< location.function_name() << " "
<< message << '\n';
}
int main() {
log("Hello world!");
}
가능한 출력 :
info:main.cpp:16:main Hello world!
__PRETTY_FUNCTION__
vs __FUNCTION__
vs __func__
vsstd::source_location::function_name
답변 : __PRETTY_FUNCTION__, __FUNCTION__, __func__의 차이점은 무엇입니까?