Tôi có câu hỏi về sự khác biệt giữa dễ bay hơi và có thể thay đổi. Tôi nhận thấy cả hai có nghĩa là nó có thể thay đổi. Còn gì nữa? Họ là những điều tương tự? Có gì khác biệt? Chúng được áp dụng ở đâu? Tại sao hai ý tưởng được đề xuất? Làm thế nào để sử dụng chúng theo cách khác nhau?dễ bay hơi và có thể thay đổi trong C++
Cảm ơn rất nhiều.
Các đối tượng 'volatile' cũng có thể được thay đổi bởi các tiến trình không liên quan đến CPU. Ví dụ, một thanh ghi byte nhận được trong một thiết bị ngoại vi truyền thông có thể tăng lên khi nhận được một byte (và điều này thậm chí có thể kích hoạt ngắt). Một ví dụ khác là một cờ đang chờ xử lý-đăng ký trong một thiết bị ngoại vi. –
Ngoài ra, 'volatile' không chỉ có nghĩa là đối tượng có thể thay đổi bên ngoài kiến thức của trình biên dịch - nó cũng có nghĩa là ghi vào đối tượng không thể bị loại bỏ bởi trình biên dịch ngay cả khi những ghi đó có vẻ vô dụng. Ví dụ: 'x = 1; x = 0, 'if' x' là dễ bay hơi, trình biên dịch phải phát ra cả hai hoạt động ghi (có thể có ý nghĩa ở cấp phần cứng). Tuy nhiên, đối với một đối tượng không dễ bay hơi, trình biên dịch có thể chọn không bận tâm khi viết '1' vì nó không bao giờ được sử dụng. –
Một đối tượng có thể được đánh dấu cả 'const' và' volatile'! Bạn không thể thay đổi đối tượng, nhưng nó có thể được thay đổi sau lưng bạn. – CTMacUser