Đầu tuần này, Kenny Kerr presented C++/WinRT at CppCon 2016 . Nó là một phép chiếu C++ chuẩn cho Windows Runtime, dựa trên Modern.Có thể sử dụng C++/CX và C++/WinRT trong cùng một dự án không?
Theo tôi hiểu, trình biên dịch/bộ tiền xử lý/bộ mã hóa C++/CX không chạm vào mã C++ chuẩn, và với C++/WinRT là thư viện chuẩn C++, đó là cách giải thích ngây thơ của tôi, cả C++/CX và C++/WinRT có thể được sử dụng trong cùng một dự án.
Câu hỏi:
- Trước tiên: Liệu giải thích ngây thơ của tôi có đúng không?
- Nếu có, C++/CX và C++/WinRT có thể được sử dụng trong cùng một đơn vị biên dịch không?
- Tại mức độ chi tiết nào có thể trộn lẫn C++/CX và C++/WinRT, trong trường hợp chúng không thể nằm trong cùng một đơn vị biên dịch?
- C++/WinRT có thể tiêu thụ các loại được triển khai bằng C++/CX trong cùng một dự án không? (Tôi mong đợi điều này là khó khăn, vì trình biên dịch C++/WinRT cần tạo ra các tiêu đề từ siêu dữ liệu .winmd, do đó có sự phụ thuộc vào đầu ra trình biên dịch (trước).
Trong trường hợp quan trọng, câu trả lời cho những câu hỏi đó cho phép tôi đưa ra quyết định ngay bây giờ về cách di chuyển các dự án C++/CX của tôi trong tương lai.
Embracing Standard C++ for the Windows Runtime (on YouTube).
Hmya, chúng tôi sẽ phải xem những gì anh ấy đang làm việc trong năm qua, anh ấy đã không lưu giữ kho lưu trữ github của mình được cập nhật. Nếu bạn chưa bao giờ có lý do chính đáng để thâm nhập vào WRL trước đó thì có khả năng C++/WinRT sẽ quay bất kỳ cánh quạt nào. Mà thực sự là những gì nó được, ít nhất là hương vị moderncpp, một wrapper như WRL nhưng cập nhật cho C++ 1xyz. Mã của Kerr và McNellis làm tôi đau đầu, bạn có thể thấy nó làm gì nhưng không dễ dàng thấy nó không làm gì. –
@HansPassant: Lý do chính cho C++/WinRT (trên C++/CX) sẽ là hiệu suất. Thời gian biên dịch không phải là tuyệt vời, và thông báo lỗi là câu đố tốt, thường là. Tuy nhiên, tôi thích cú pháp ngắn gọn (hoặc quá ngắn gọn, nếu bạn muốn) nhiều hơn lời gọi WRL rõ ràng (tôi có thể thay đổi suy nghĩ của mình, lần đầu tiên tôi phải gỡ lỗi một vấn đề thực). Tôi đồng ý, rằng khó thấy hơn, mã nào (hoặc không làm). Nhưng điều đó cũng đúng với C# /. NET, và điều đó không bao giờ là cách làm cho nó trở thành mục tiêu ưa thích cho nhiều người ở ngoài kia. Dù sao, sở thích cá nhân là cá nhân, tôi đoán;) – IInspectable
Tôi không phải là một chuyên gia C++, nhưng ... tại sao không? Các dự án C++/CX có thể có mã C++ thông thường trong đó và C++/WinRT chỉ là C++ thông thường, đúng không? –