여러 번역 단위에서 다음 인라인 함수를 호출 할 때 정확히 "후드"가 발생하는 것에 관심이 있습니다.인라인 함수의 정적 변수
namespace some_name
{
inline const float& get_float()
{
static const float a = 5.0f;
return a;
}
}
내 의도는 외부로 링크 된 변수를 만드는 것이었다 'A'(네임 스페이스와 헤더가 포함되어있는 경우)하는 코드를 사용하지만, 또한 내가이 변수에 대한 변경을 방지하고 싶었 될 수있다. 테스트에서 나는 성공한 것으로 보이지만이 함수를 처음으로 호출하고 다음에 여러 번 호출하면 정확히 무슨 일이 일어나는지에 관심이 있습니다.
추가 질문 : 정적 변수 선언/정의로 전역 네임 스페이스를 오염시키고 있습니까?
static const float를 반환하는 함수를 만드는 대신 클래스의 멤버 변수 또는 네임 스페이스의 멤버 변수로만 설정하는 것이 좋습니다. 그것은 여전히 const입니다 ... – UKMonkey
UKMonkey 내가 그런 식으로한다면, 내가 다른 변수 변환 단위로 변수를 사용할 때마다 const float 유형의 복사본을 얻을 것이라고 확신하지 못했습니다. – user3271640
'a'가 외부 적으로 연결되어 있는지 확인 하시겠습니까? 왜 외부 연결 상수가 필요합니까? 외부 연결은 여러 컴파일 단위가 하나의 변수 인스턴스를 공유하고 변경 될 때 모든 단위가 업데이트 된 값을 읽는 것을 나타냅니다. 그러나 상수는 변하지 않을 것으로 예상됩니다. 더욱이 많은 경우 컴파일러는 상수 값을 직접 명령어에 포함시켜 메모리에 나타나지 않습니다. –