2017-09-27 23 views
6

C++ 표준은 mutex, atomics 또는 conditinal_variable이 표준 레이아웃 유형임을 지정합니다."블랙 박스"유형에 대한 표준 레이아웃 보장의 목적은 무엇입니까?

이 사양의 이점은 무엇입니까? 사용자가이 속성을 어떻게 활용할 수 있습니까?

일반적으로 구현의 세부 사항을 모른 채 유형이 표준 레이아웃이라는 것을 알고 있다면 나는 무엇을 얻을 수 있습니까?

+0

표준 레이아웃 유형은 다른 언어에서보다 쉽게 ​​소비 될 수 있습니다. – Bathsheba

+0

@ Bathsheba 다른 언어가 C++ 일 때도? ;) – curiousguy

답변

1

다른 프로그래밍 언어으로 작성된 다른 프로그램과 코드를 이야기 할 수 있습니다.

심판은 C++ concepts: StandardLayoutType 언급 :

표준 레이아웃 유형은 다른 프로그래밍 언어로 작성된 코드와 통신하는 데 유용합니다. this standard layout reference에서

+0

당신은'std :: offsetof' \ o/ – YSC

+0

을 사용할 수 있습니다.이 @YSC [질문] (https://stackoverflow.com/questions/20170578/offsetof-on-standard-layout-class)를 의미합니까? – gsamaras

+0

표준 레이아웃 클래스의 멤버간에 패딩이 있는지 알 수없는 것 같습니다. 컴파일러가 정렬을 요구하지 않더라도 컴파일러는 멤버 사이에 패딩을 추가 할 수 있습니까? – Oliv

2

:

표준 레이아웃 유형은 다른 프로그래밍 언어로 작성된 코드와 통신하는 데 유용합니다.

당신이 혼합 C 및 C++ 응용 프로그램을 빌드하는 경우 예를 들어, C 구조는 표준 레이아웃되며 C로 작성된 부품 및 C++로 작성된 부분 사이에 상호 교환 사용할 수 있습니다. 이것은 종종 운영 체제 고유 기능 및 구조를 사용할 수있는 데 매우 중요합니다.

+0

좋은 답변, 다행히 우리는 동의합니다! =) – gsamaras

+0

솔직히 어떻게 보지 못하겠습니까? 예를 들어 주면 어떻게 도움이 될까요? – Oliv

+0

@Oliv C 용으로 작성된 라이브러리가 많이 있습니다. C++ 응용 프로그램에서 해당 라이브러리 중 하나를 사용하려면 어떻게해야합니까? 그 C 라이브러리에는 구조가 무엇입니까? 그 구조는 * 표준 레이아웃 *이 될 것이기 때문에 C++ 프로그램에서 그 인스턴스를 만들고 그 포인터 (또는 인스턴스 복사본)를 C 라이브러리 함수에 전달할 수 있습니다. –