【发布时间】:2012-11-19 02:46:10
【问题描述】:
它无法编译,我不知道自己在做什么错。当我尝试这样做时:
(ultimo->siguiente)=nnodo;
编译器不允许我这样做。两者都不起作用:
scanf("%d", &(nnodo->dni));
PD:baja 和 modif 函数仍未完成,但它们不应与主程序发生任何冲突。
编译器输出(Visual Studio 2010):
错误 2 错误 C2037: 'siguiente' 左侧指定未定义的结构/联合 'stru' c:\documents and settings\emiliano\desktop\asdc.c 52 1 abm
错误 3 错误 C2037:“dni”左侧指定未定义的结构/联合“stru”c:\documents and settings\emiliano\desktop\asdc.c 55 1 abm
4 IntelliSense:不允许指向不完整类类型的指针 c:\documents and settings\emiliano\desktop\asdc.c 52 3 abm
5 IntelliSense:不允许指向不完整类类型的指针 c:\documents and settings\emiliano\desktop\asdc.c 55 15 abm
我认为我的 typedef 是正确的,但我真的不知道。
#include <stdio.h>
#include <stdlib.h>
typedef struct stru* pstru;
typedef struct{
int dni;
pstru siguiente;
}stru;
pstru alta(pstru ultimo);
pstru baja(pstru ultimo);
pstru modif(pstru ultimo);
int menu(pstru ultimo);
int main(){
pstru ultimo;
ultimo=(pstru)malloc(sizeof(stru));
menu(ultimo);
return 0;
}
int menu(pstru ultimo){
int opc;
printf("Para alta (1), para baja (2), para modif (3), para salir (4)\n");
scanf("%d", &opc);
switch(opc){
case 1:
ultimo=alta(ultimo);
break;
case 2:
ultimo=baja(ultimo);
break;
case 3:
ultimo=modif(ultimo);
break;
case 4:
return 0;
}
menu(ultimo);
return 0;
}
pstru alta(pstru* ultimo){
pstru nnodo;
nnodo=(pstru)malloc(sizeof(stru));
(ultimo->siguiente)=&nnodo;
printf("Ingrese DNI\n");
scanf("%d", &(nnodo->dni));
ultimo=nnodo;
return ultimo;
}
pstru baja(pstru ultimo){
return ultimo;
}
pstru modif(pstru ultimo){
return ultimo;
}
【问题讨论】: