Я не могу понять странное поведение этой программы. У меня есть 2 файла, file1.c и file2.c
file.c is
#include <stdio.h>struct ll {
int key;
struct ll *next;
};
extern void func(struct ll*);
int main(void)
{
struct ll l = { 1, &l };
printf("%d %d\n",l.key,l.next->key);
func(&l);
return 0;
}
и file2.c:
#include <stdio.h>
struct ll
{
struct ll *next;
int key;
};
void func(struct ll *l)
{
printf("%d \n",l->key);
printf("%d \n",l->next->key);
}
Теперь, когда я компилирую и запускаю его, он показывает ошибку сегментации. Но где, как в file2.c, если я заменю struct ll на:
struct ll
{
int key;
struct ll *next;
};
Тогда все работает нормально. Я имею в виду, просто меняя порядок объявления, это влияет на результат.