2013-04-10 28 views
5

Tôi đang viết chương trình cho ARM với môi trường Linux. không phải là một chương trình ở mức độ thấp của nó, nói mức độ ứng dụngDễ bay hơi trong C và Cpp trong môi trường Linux

Bạn có thể làm rõ cho tôi sự khác biệt giữa là gì,

int iData; 

vs

volatile int iData; 

Liệu nó có ảnh hưởng phần cứng cụ thể?

+2

Chưa kể một [thậm chí cơ bản hơn cách tiếp cận] (http://bit.ly/11RH6wk). – WhozCraig

Trả lời

-1

dễ bay hơi trong C đã tồn tại với mục đích không lưu vào bộ nhớ cache các giá trị của biến một cách tự động. Nó sẽ báo cho máy không nhớ giá trị của biến này. Vì vậy, nó sẽ lấy giá trị của biến dễ bay hơi nhất định từ bộ nhớ chính mỗi khi nó gặp nó. Cơ chế này được sử dụng bởi vì bất cứ lúc nào giá trị có thể được sửa đổi bởi hệ điều hành hoặc bất kỳ ngắt. Vì vậy, bằng cách sử dụng dễ bay hơi sẽ giúp chúng tôi truy cập vào giá trị afresh mỗi lần.

Đọc trang Wikithis để biết thêm lời giải thích

+0

Ans của bạn sẽ rất tuyệt. cảm ơn bạn Jaguar .. Tôi có một nghi ngờ khác, chúng ta có cần biến động trong trường hợp máy không có bộ nhớ cache không? –

+0

Bạn cần 'biến động 'ngay cả khi không có bộ nhớ cache, khi bạn có nhiều hơn một thanh ghi trong bộ xử lý của mình. Bởi vì từ khóa 'volatile' cũng nói với trình biên dịch: không giữ giá trị đó trong thanh ghi, luôn lấy nó từ bộ nhớ ... Ví dụ, trình xử lý tín hiệu thường đặt cờ' volatile sigatomic_t' ... –

+2

Xin lỗi nhưng thats sai, dễ bay hơi không ngăn máy tính lưu trữ bất cứ thứ gì. Nó ngăn không cho COMPILER giữ một biến trong sổ đăng ký. Nói chung, nó vô hiệu hóa CSE và một vài tối ưu hóa khác cho biến này. –

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