Tôi đang phát triển một ứng dụng trong C++ 11, sử dụng g ++ - 4.7 và -std = C++ 0x.
Ứng dụng của tôi được liên kết với một số thư viện được chia sẻ được biên dịch bằng g ++ - 4.7, nhưng không có chỉ thị -std = C++ 0x.Khả năng tương thích thư viện giữa C++ 11 và C++ 03
Thật không may, không có gì hoạt động, có nghĩa là tôi có một số hành vi lạ khi sử dụng các lớp thư viện bên ngoài và phương pháp. (Tất nhiên biên dịch ứng dụng của tôi mà không có -std = C++ 0x hoạt động tốt).
Đây có phải là hành vi dự kiến hoặc đó là lỗi trình biên dịch?
Bất kỳ giải pháp nào (giống như từ khóa
extern
C)?
Tại sao bạn không thể biên dịch lại thư viện bằng '-std = C++ 0x'? – leftaroundabout
Rõ ràng là vi phạm yêu cầu rằng tất cả các đơn vị dịch sẽ thấy cùng một mã nếu bạn biên dịch một TU với một chế độ xem các tiêu đề thư viện và một TU khác với một chế độ xem khác. –
Soạn thảo với các cờ khác nhau là một trong những con đường ngắn nhất để chứng điên cuồng. Nó được nhiều hơn hoặc ít hơn cho cảnh báo và mức độ tối ưu hóa, nhưng khi nó ảnh hưởng đến việc giải thích của mã nguồn hoặc bố trí của các tập tin nhị phân sản xuất ... hum. –