同样的程序在codeblock cfree5.0编译结果不同,为什么?

木犀花香 2013-10-04 06:45:30
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <time.h>
#include <math.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FASLE 0
#define MAXVEX 100 /**< 最大顶点数 */

typedef int Status;
typedef int VertexType;
typedef int EdgeType;

/**< 边表节点 */
struct edgenode;
typedef struct edgenode EdgeNode;
struct edgenode
{
int adjvertex;
EdgeNode *next;
};
/**< 顶点节点 */
struct vertexnode;
typedef struct vertexnode VertexNode;
typedef VertexNode AdjList[MAXVEX];
struct vertexnode
{
VertexType data;
EdgeNode *header;
};

/**< 图 */
struct graph;
typedef struct graph *Graph;
struct graph
{
int numvertex,numedge;
AdjList adjList;
};

void CreatGraph(Graph G)
{
G=(Graph)malloc(sizeof(struct graph));

int i,j,k;
EdgeNode *E;
printf("输入顶点数和边数:\n");
scanf("%d %d",&G->numvertex,&G->numedge);


for(i=0; i < G->numvertex; i++)
G->adjList[i].header = NULL;

for(i=0; i < G->numedge; i++)
{
printf("输入边(vi,vj)上的顶点序号:\n");
scanf("%d %d",&i,&j); /* 输入边(vi,vj)上的顶点序号 */

E=(EdgeNode *)malloc(sizeof(EdgeNode));
E->adjvertex = j;
E->next=G->adjList[i].header;
G->adjList[i].header =E;

E=(EdgeNode *)malloc(sizeof(EdgeNode)); /* 向内存申请空间,生成边表结点 */
E->adjvertex=i; /* 邻接序号为i */
E->next = G->adjList[j].header;
G->adjList[j].header =E;

}

}



codeblock12.11:

D:\CODE\codeblock\adjlist\creatadjlist.c|28|error: array type has incomplete element type|
D:\CODE\codeblock\adjlist\creatadjlist.c|41|warning: type defaults to 'int' in declaration of 'adjList' [-Wimplicit-int]|
D:\CODE\codeblock\adjlist\creatadjlist.c||In function 'CreatGraph':|
D:\CODE\codeblock\adjlist\creatadjlist.c|55|error: subscripted value is neither array nor pointer nor vector|
D:\CODE\codeblock\adjlist\creatadjlist.c|64|error: subscripted value is neither array nor pointer nor vector|
D:\CODE\codeblock\adjlist\creatadjlist.c|65|error: subscripted value is neither array nor pointer nor vector|
D:\CODE\codeblock\adjlist\creatadjlist.c|69|error: subscripted value is neither array nor pointer nor vector|
D:\CODE\codeblock\adjlist\creatadjlist.c|70|error: subscripted value is neither array nor pointer nor vector|
D:\CODE\codeblock\adjlist\creatadjlist.c|48|warning: unused variable 'k' [-Wunused-variable]|
D:\CODE\codeblock\adjlist\main.c||In function 'main':|
D:\CODE\codeblock\adjlist\main.c|7|error: unknown type name 'AdjGraph'|
D:\CODE\codeblock\adjlist\main.c|8|error: 'AdjGraph' undeclared (first use in this function)|
D:\CODE\codeblock\adjlist\main.c|8|note: each undeclared identifier is reported only once for each function it appears in|
D:\CODE\codeblock\adjlist\main.c|8|error: expected ';' before 'malloc'|
D:\CODE\codeblock\adjlist\main.c|9|warning: implicit declaration of function 'CreatAdjGraph' [-Wimplicit-function-declaration]|
||=== Build finished: 9 errors, 3 warnings (0 minutes, 1 seconds) ===|
cfree就可以,到底是什么问题啊!


...全文
256 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
木犀花香 2013-10-05
  • 打赏
  • 举报
回复
引用 3 楼 u012331924 的回复:
用的什么编译器? 你把这两句

typedef    struct   vertexnode    VertexNode;
typedef   VertexNode   AdjList[MAXVEX];
放到结构体定义后面试试,前置声明去掉。
嗯,用codeblock 12.11编译一直报错,用cfree5.0编译就没问题,所以问一下!
木犀花香 2013-10-05
  • 打赏
  • 举报
回复
引用 2 楼 pathletboy 的回复:
文件名 creatadjlist.c 改 creatadjlist.cpp让mingw用g++编译。 或者手工用g++编译。
好的,我试试!
wisatbff 2013-10-04
  • 打赏
  • 举报
回复
用的什么编译器? 你把这两句

typedef    struct   vertexnode    VertexNode;
typedef   VertexNode   AdjList[MAXVEX];
放到结构体定义后面试试,前置声明去掉。
pathletboy 2013-10-04
  • 打赏
  • 举报
回复
文件名 creatadjlist.c 改 creatadjlist.cpp让mingw用g++编译。 或者手工用g++编译。
木犀花香 2013-10-04
  • 打赏
  • 举报
回复
没人来,只能自顶一个了!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧