0
我无法理解这个程序的怪异行为。我有2个文件,在file1.c和file2.c中结构声明的顺序改变输出
file.c是
#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;
};
然后它工作正常。我的意思是通过交换声明的顺序,它影响了输出。
见我的编辑,希望它更清楚,如果没有,我会尝试更多。 – MByD 2012-04-01 04:34:15
非常感谢:)。现在清楚了,看了编辑后的版本 – Jatin 2012-04-01 04:36:54
在两者之间,你从gcc的哪个参数中产生了这个轮廓? – Jatin 2012-04-01 04:49:37