глобальные переменные должны храниться в следующем порядке: g_a, g_b, g_c
Нет, порядок, в котором они выделяются памяти, никак не влияет на доступ к ним или нет. .
Если вы хотите, чтобы они были в определенном порядке, вы можете сделать это, поместив их в struct
и объявив что-то вроде:
#include <stdio.h>
typedef struct {
int g_a;
int g_b;
int g_c;
} tOrderGuaranteed;
tOrderGuaranteed myStruct;
int main()
{
printf("Hello world\n");
// Use 'myStruct.g_a' rather than 'g_a'.
return 0;
}
Но, как уже говорилось, этоПохоже, это вам не особо выгодно, тем более что компилятор может свободно вставлять отступы по своему усмотрению между этими элементами и после них.
При условии, что вы используете g_b
для доступа к этому (исходный неструктура)переменная, а не какой-то странный (неопределенное поведение) вариант, такой как *(&g_a+1)
, ваш код будет работать нормально независимо от того, как все расположено в памяти.