는 : == I는 항등 연산자의 구현을 발견아무도 MSVC++ std 라이브러리에서이 배열 접근을 설명 할 수 있습니까? 일반적으로 C에 위치하고있는 type_info의 비주얼 스튜디오 구현에서
class type_info {
/* ... */
_CRTIMP_PURE bool __CLR_OR_THIS_CALL operator==(const type_info& _Rhs) const;
/* ... */
private:
void *_M_data;
char _M_d_name[1];
__CLR_OR_THIS_CALL type_info(const type_info& _Rhs);
/* ... */
};
: \ 프로그램 파일 마이크로 소프트 비주얼 스튜디오 10.0 \ VC \ \ (86)는 \ 소속 카테고리 포함 _M_d_name + 1 문자 포인터를 사용합니다. 아무도 내게 "작동"하는 방법을 설명 할 수 있기 때문에 그것이 배열 범위 밖에있을 것 같습니까?
구현, C : \ 프로그램 파일 (86) 마이크로 소프트 비주얼 스튜디오 \ 10.0 \ VC \의 CRT \ SRC \ ti_inst.cpp :
ASSERT_UNMANAGED_CODE_ATTRIBUTE
SECURITYSAFECRITICAL_ATTRIBUTE
bool type_info::operator==(const type_info& rhs) const
{
return (strcmp((rhs._M_d_name)+1, (_M_d_name)+1)?0:1);
}
감사합니다!
이것은 기본적으로 가변 길이 구조체를 작성하는 방법입니다. –
이것은 컴파일러 등을 포함하는 "구현"의 일부이기 때문에 정의되지 않은 동작을 사용하도록 정의하는 등 원하는대로 자유롭게 정의 할 수 있습니다. –
@ T.C. 귀하의 의견에 감사드립니다. 네가 조금 더 정교하게 만들 수있는 기회가 있니? – trev