#keywords C++, constexpr {{{+1 요약: g_는 mutable 전역 변수에만 쓰자. }}} C++ 11 에서 새롭게 도입되고 C++14에서 향상된 constexpr 키워드는 컴파일 타임 상수를 의미하며 변수 앞에 적용될 수 있다. 그래서 전역 변수를 쓸 때처럼 constexpr를 정의하면 마치 g_ prefix를 붙여야 할 것 같이 느껴질 수 있다. 하지만 이건 추천하지 않는다. 이건 코딩 스타일/컨벤션의 문제인데, 몇 가지 관점에서 볼 수 있다. 보통 g_는 '''global variable'''이라는 의미로 사용된다. 그래서 많은 개발자들이 g_는 '''변경 가능한 전역 변수 (mutable global state)'''에만 붙인다고 생각한다. ❓ 그런데 constexpr은? constexpr은 컴파일 타임 상수이다. 불변 (immutable)이고, 전역 상태의 위험성도 없다. 즉, 일반적인 전역 변수와는 의미가 다르다. 그래서 g_를 붙이면 오히려: '' "이 변수는 프로그램 어딘가에서 변경될 수 있는 글로벌 상태인가?" '' 처럼 오해할 여지가 있다. 만약 프로젝트 컨벤션에서 g_를 mutable 전역 변수에 쓰고 있다면, constexpr 값에는 안 붙이는 게 좋다. 대신 다음 중 하나를 추천한다. {{{#!gcode constexpr float kDefaultDpi = 96.0f; // Google C++ 스타일 constexpr float DefaultDpi = 96.0f; // 일반적인 modern C++ 스타일 }}}