Hãy xem xét các đoạn mã sau:Làm thế nào để ngăn chặn g ++ tối ưu hóa ra một vòng lặp được kiểm soát bởi một biến có thể được thay đổi bởi một IRQ?
unsigned global;
while(global);
global
được sửa đổi trong một chức năng được gọi bởi một IRQ. Tuy nhiên, g + + loại bỏ phép thử "không-không-zero" và dịch vòng lặp while thành một vòng lặp vô tận.
Tắt tối ưu hóa trình biên dịch giải quyết vấn đề, nhưng C++ có cung cấp ngôn ngữ xây dựng cho nó không?
@ Styne666: tiêu đề là câu hỏi – Necrolis
Xem thêm http://stackoverflow.com/q/7083482/594137 –
@ Styne666 - thực tiễn không tốt để viết mã cần một cấu hình trình biên dịch cụ thể để hoạt động. Do đó, việc vô hiệu hóa tối ưu hóa không có tùy chọn cho mã sản xuất. – 0xbadf00d