volatile static int i;
иИмеет ли смысл статические и летучие ключевые слова?
static volatile int i;
чем разница между ними? Как это видит компилятор?
volatile static int i;
иИмеет ли смысл статические и летучие ключевые слова?
static volatile int i;
чем разница между ними? Как это видит компилятор?
Нет никакой разницы, вы можете указать их в любом порядке.
Оба означают то же
Википедия дает информацию о них http://en.wikipedia.org/wiki/Volatile_variable
Порядок не имеет значения. static
- это срок хранения.
6.2.4 хранение длительность объекты
3 Объекта, идентификатор объявлены с внешней или внутренней связи, или с спецификатора статического хранения класса имеет статическое хранение длительности. Его время жизни - это полное выполнение программы, а ее сохраненное значение инициализируется только один раз, до запуска программы.
и:
6.7.3 Тип отборочных
Объект, который имеет летучий квалифицированный типа может быть изменены таким образом, неизвестными реализации или имеют другие неизвестные побочные эффекты. Поэтому любое выражение, относящееся к такому объекту , должно оцениваться строго в соответствии с правилами абстрактной машины , как описано в 5.1.2.3. Кроме того, в каждой точке последовательности последнее значение, хранящееся в объекте , должно совпадать с значением, предписанным абстрактной машиной, за исключением измененных неизвестных факторов, упомянутых ранее.114). Что представляет собой доступ к объекту, который имеет нестабильную квалификацию тип определяется реализацией.
В вашем примере, порядок не имеет значения, но также следующее действует
static int volatile i;
, который показывает, что порядок в целом является актуальной, так как вы не можете поставить static
после int
. static
квалифицирует переменную, volatile
и const
подходит для данного типа.