Я хотел посмотреть, могу ли я инициализировать глобальную переменную, указывающую на себя:
#include <stdio.h>
struct foo { struct foo *a, *b; } x = { &x, &x };
int main()
{
printf("&x = %p, x.a = %p, x.b = %p\n", &x, x.a, x.b);
return 0;
}
Этот код компилируется и выполняется, как ожидалось, с помощью gcc
(все три указателя печатаются одинаково).
Я хочу знать:
- Является ли это надежным?
- Этот стандарт?
- Является ли это переносной?
РЕДАКТИРОВАТЬ: Чтобы уточнить, я задаю вопрос о доступности адреса x
в своем собственном инициализаторе.