Если вы объявляете разделимые переменные по порядку, будут ли они иметь инкрементные адреса - PullRequest
0 голосов
/ 16 октября 2019

У нас есть программа переменного тока с большим количеством файлов, и нам интересна одна конкретная вещь.

Мы компилируем ее с C51.

Если, скажем, в одном из файлов яобъявите несколько переменных, таких как:

unsigned char xdata a;
unsigned char xdata b;
...
//etc
unsigned char xdata z;

Будут ли их адреса увеличиваться и в том же порядке? как они объявлены?

Я понимаю, что увеличение адресов может быть достигнуто с помощью массивов или структур или что я могу назначать фиксированные адреса по своему выбору, но это не вопрос.

1 Ответ

1 голос
/ 16 октября 2019

Будут ли их адреса увеличиваться и в том же порядке? как они объявлены?

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

Кроме того, вы не можете использовать арифметику указателей для чего-либо, что не является массивом, или вы рискуете столкнуться с различными незаметными ошибками неопределенного поведения.

...