Могут ли компиляторы изменить порядок объявлений? - PullRequest
1 голос
/ 27 октября 2011

В объявлении, таком как int i, v[5], j;, как будут распределяться переменные?Разрешено ли компилятору изменять их порядок?

Ответы [ 3 ]

3 голосов
/ 27 октября 2011

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

(обратите внимание, что компилятор не может переупорядочивать переменные в структуре)

2 голосов
/ 27 октября 2011

Да, компилятор может (и будет) изменять порядок.Упорядочение зависит от компилятора и не указано в стандартах C.Стандарты C даже не указывают, что стек должен существовать.

1 голос
/ 27 октября 2011

Компилятору разрешено размещать их практически везде, где он хочет.

...