2011-03-20 4 views
6

일반적으로 리눅스에서 nm을 사용하여 관찰 한 내용은 extern "C"을 사용하지 않아도 T 심볼 이름 (다른 컴퓨터에서 일관된 상태로 유지됨)을 유지한다는 것입니다. 내 관찰이 맞습니까?다른 컴퓨터에서 컴파일 할 때 C++ mangled 이름이 일관되게 유지됩니까?

참고 모든 컴퓨터에서 gcc를 사용하고 있습니다.

+1

*'T' 심볼 이름은 무엇입니까? –

+0

@ Space_C0wb0y : [ "T"기호는 텍스트 (코드) 섹션에 있음] (http://unixhelp.ed.ac.uk/CGI/man-cgi?nm) –

+0

@ Space_C0wb0y :'man nm' 확인 – MrD

답변

9

컴퓨터, 시간 또는 날씨가 이름 맹 글링에 영향을주는 것은 매우 드문 일입니다.

편차가 발생할 수있는 원인은 컴파일러 버전의 차이입니다.

그러나 많은 Linux 플랫폼은 C++ 용 ABI (application binary interface)를 정의합니다. 여기에는 이름 변환 규칙이 포함됩니다. 이 플랫폼에서 최적화 레벨, 컴파일러 버전, 호스트 이름, 하드 디스크 일련 번호, 시간, 날씨, 좋아하는 스포츠 팀이 지난 주에 잃어버린 것이 든 그렇지 않은지에 상관없이 동일한 소스 코드가 동일한 맹 글링 된 이름으로 컴파일됩니다 ABI에서 명시 적으로 언급했다.

+0

감사합니다. 그게 설명해. – MrD

관련 문제