Имеет ли значение порядок статических и изменчивых ключевых слов? - PullRequest
5 голосов
/ 18 августа 2010
volatile static int i; 

и

static volatile int i;  

В чем разница между этими двумя?Как это видит компилятор?

Ответы [ 4 ]

3 голосов
/ 18 августа 2010

Заказ не имеет значения.static - это продолжительность хранения.

6.2.4 Продолжительность хранения объектов

3 Объект, идентификатор которого объявлен с внешней или внутренней связью, илисо спецификатором класса хранилища static имеет статическую продолжительность хранения.Его время жизни - это полное выполнение программы, и его сохраненное значение инициализируется только один раз, до запуска программы.

и:

6.7.3 Типквалификаторы

Объект, имеющий тип volatile-qualified, может быть изменен способами, неизвестными для реализации, или иметь другие неизвестные побочные эффекты.Поэтому любое выражение, относящееся к такому объекту, должно оцениваться строго в соответствии с правилами абстрактной машины, как описано в 5.1.2.3.Кроме того, в каждой точке последовательности значение, которое в последний раз хранится в объекте, должно соответствовать значению, предписанному абстрактной машиной, за исключением случаев, когда оно изменено неизвестными факторами, упомянутыми ранее.-определено.

2 голосов
/ 18 августа 2010

Разницы нет, вы можете указать их в любом порядке.

1 голос
/ 18 августа 2010

В вашем примере заказ не имеет значения, но действует также следующее

static int volatile i;

, который показывает, что порядок в целом актуален, поскольку вы не можете поставить static после int. static уточняет переменную, volatile и const уточняют тип.

1 голос
/ 18 августа 2010

Оба означают одно и то же

Wikepedia дает вам информацию о них http://en.wikipedia.org/wiki/Volatile_variable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...