2017-09-27 14 views
6

Tiêu chuẩn C++ chỉ định rằng mutex, atomics hoặc conditinal_variable thuộc loại bố cục chuẩn.Mục đích của bảo đảm bố cục tiêu chuẩn cho các loại hộp đen là gì?

Lợi ích của đặc điểm kỹ thuật này là gì? Cách người dùng có thể tận dụng lợi thế của thuộc tính này?

Và nói chung, tôi có thể đạt được điều gì nếu biết loại là bố cục chuẩn mà không biết chi tiết triển khai của nó?

+0

Loại bố cục chuẩn có thể dễ dàng sử dụng hơn bởi các ngôn ngữ khác. – Bathsheba

+0

@Bathsheba Ngay cả khi ngôn ngữ khác cũng là C++? ;) – curiousguy

Trả lời

1

Bạn có thể làm cho mã của mình trao đổi với các chương trình khác, được viết bằng Ngôn ngữ lập trình khác nhau so với ngôn ngữ của bạn.

Tỉ đề cập C++ concepts: StandardLayoutType:

loại bố cục Tiêu chuẩn này rất hữu ích cho việc giao tiếp với mã viết bằng ngôn ngữ lập trình khác.

+0

Bạn có thể sử dụng 'std :: offsetof' \ o/ – YSC

+0

Bạn có nghĩa là @YSC [question] (https://stackoverflow.com/questions/20170578/offsetof-on-standard-layout-class)? – gsamaras

+0

Có vẻ như tôi không thể biết nếu có một phần đệm giữa các thành viên của lớp bố cục tiêu chuẩn. Trình biên dịch có được phép thêm đệm giữa các thành viên ngay cả khi căn chỉnh không yêu cầu nó? – Oliv

2

Từ this standard layout reference:

loại bố cục Tiêu chuẩn này rất hữu ích cho việc giao tiếp với mã viết bằng ngôn ngữ lập trình khác.

Ví dụ, nếu bạn xây dựng một C hỗn hợp và ứng dụng C++, các cấu trúc C sẽ tiêu chuẩn bố trí và có thể được sử dụng thay thế cho nhau giữa các bộ phận viết bằng C và các bộ phận viết bằng C++. Điều này thường rất quan trọng để có thể sử dụng các chức năng và cấu trúc gốc của hệ điều hành.

+0

Câu trả lời hay, vui vì chúng tôi đồng ý! =) – gsamaras

+0

Tôi thành thật không thấy làm thế nào, nó sẽ giúp tôi nếu bạn đã cho tôi một ví dụ? – Oliv

+0

@Oliv Có nhiều thư viện được viết cho C. Nếu bạn muốn sử dụng một trong những thư viện đó trong ứng dụng C++ của bạn thì sao? Thư viện C có cấu trúc là gì? Bởi vì cấu trúc đó sẽ là * bố trí chuẩn * bạn có thể tạo cá thể của nó trong chương trình C++ của bạn, và truyền con trỏ tới nó (hoặc thậm chí các bản sao của các cá thể) tới các hàm thư viện C. –

Các vấn đề liên quan