我收到以下代码的编译错误。我尽了最大努力,但无法理解。任何帮助将不胜感激。
#include <stdio.h>
#include <stdlib.h>
#define N 100
int counter=0;
struct node {
int value; };
struct node *p = (struct node *) malloc (N*sizeof (node));
void main()
{
int a = 5, b=6;
struct node * c = 0;
c = add(a,b);
}
void add(int m, int n)
{
struct node * pin_1;
struct node * pin_2;
struct node * pin_0;
pin_0->value = m;
pin_1->value = n;
pin_2->value = m + n;
counter++;
printf("value of out is %d /n", pin_2->value);
}
我在GCC中收到错误:
struct_check.c:9:
错误:‘node’
未声明此处(不在函数中)
答案 0 :(得分:4)
首先,从语法上讲,你需要改变
struct node *p = (struct node *) malloc (N*sizeof (node));
到
struct node *p = malloc (N*sizeof ( struct node));
因为node
本身不是类型,除非您使用typedef
创建一个。
那就是说,
p
。pin_2
和pin_0
未初始化,即调用undefined behavior。在取消引用它们之前,你需要让这些指针指向一些有效的内存。void main()
已过时,对于托管环境,符合条件的签名将为int main(void)
,at aleast。struct node *p = malloc ( N *sizeof(*p));