可以的,例如只讀的狀態寄存器。它是volatile因為它可能被意想不到地改變。它是const因為程序不應該試圖去修改它。
一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份
volatile修飾符告訴complier變量值可以以任何不被程序明確指明的方式改變,最常見的例子就是外部端口的值,它的變化可以不用程序內的任何賦值語句就有可能改變的,這種變量就可以用volatile來修飾,complier不會優化掉它。
const修飾的變量在程序里面是不能改變的,但是可以被程序外的東西修改,就象上面說的外部端口的值,如果僅僅使用const,有可能complier會優化掉這些變量,加上volatile就萬無一失了。