| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1222 人关注过本帖
标题:请问一下这个错误是什么意思
只看楼主 加入收藏
gang
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-2-28
收藏
 问题点数:0 回复次数:15 
请问一下这个错误是什么意思
在用VC++编译C语言编的一个小程序时,在一个自定义函数里面我定义了一个句子,
output_message(goods[MAX])
{ int i=0,j=0,count,page=1;
~~
~~
}
然后编译的时候却有下面的错误
'<Unknown>' : function-style initializer appears to be a function definition
双击那这句话句却是指向那句:
int i=0,j=0,count,page=1;
怎么想都想不明白,我想问一下到底是什么意思!
还有就是C++里面是不是不能使用clrscr(), 我明明已经加了#include<conio.h>了还是不行,还是出现了下面这样的错误语句:'clrscr' : undeclared identifier
望各位路过的高手能不吝留下只言片语!
搜索更多相关主题的帖子: function C语言 
2006-03-02 17:32
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
count没有初始化。
变量初始化是从右向左的,左边可以有未初始化的变量,右边不可以出现未初始化的变量。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-03-02 17:34
gang
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-2-28
收藏
得分:0 
按楼上的意思是不是把count进行初始化就行了?
可是我把count变成count=0还是一样出现那句错误啊
还是我理解错了,请说再说得详细点,谢谢!

一个来自华南师大通信工程的菜鸟,只学过一点学校教的C++和自学了一点C,大家不要笑他!哈哈……
2006-03-02 17:42
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
如果还有错的话,count难道是保留字?

我用Borland C++ 编过这个代码,没错。可能是别的原因了。下班啦。明天再来

[此贴子已经被作者于2006-3-2 18:11:44编辑过]


成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-03-02 18:10
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
对于函数的定义或声明来讲, 如果你有参数,那么你要明确参数的类型,所以那个 goods[MAX] 就用的不对了, 我不知道你那个 goods 是什么类型,如果类型为 T 那么这个定义应该写成这样:

returnType output_message(T * goods, int size) // 对于形参,要给出其类型
{
int i=0,j=0,count,page=1; // here is correct
// your code ...
}

如果有返回类型,也要给出返回类型,如果没有,那么也要加上 void 这个关键字。

楼主应该看看函数这一章节。


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-03-02 20:18
gang
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-2-28
收藏
得分:0 

这个程序是用C编的,上面本来一开始有个
#define MAX 20
那样应该没什么问题吧?
goods[]定义的是struct类型,我是想用这个做为函数的参数


一个来自华南师大通信工程的菜鸟,只学过一点学校教的C++和自学了一点C,大家不要笑他!哈哈……
2006-03-03 00:42
美丽人生
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-3-3
收藏
得分:0 

如kai所说要加上参数类型

2006-03-03 09:04
名人
Rank: 1
等 级:新手上路
威 望:1
帖 子:205
专家分:0
注 册:2006-3-3
收藏
得分:0 

那你的函数应该写成下面这样
void output_message(struct goods[MAX])
{
int i=0,j=0,count,page=1;

}


未必钱多乐便多,财多累己招烦恼。 清贫乐道真自在,无牵无挂乐逍遥。
2006-03-03 09:21
gang
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-2-28
收藏
得分:0 
按照8楼的建议我也试了一下,可是加了struct 之后,后面编译它又会出现新的问题,这个问题我已经发贴问过了,可是没人说得清!
差不多就是下面这样,很晕啊,现在!

程序的片段是这样的:
#include<stdio.h>
#include<string.h>
#define MAX 20

……
……



int sum; /*用来记录商品数目*/


/*日期结构体类型*/
struct datetime
{ int year;
int month;
int date;
};

/*商品结构体类型*/
struct goods_type
{ int num;
char name[10];
char kind[10];
int amount;
int goods_up;
int goods_down;
int in_price;
int out_price;
int in_num;
struct datetime in_time;
struct datetime pro_time;
char factory[10];
int save_day;
int profit;
}goods[MAX]; /*存放MAX种商品记录的结构体数组*/

/*输入模块*/
input_message()
{ int i=0,s=MAX;
clrscr();
printf("\n\n 录入商品信息 (最多%d种)\n",s);
printf(" -------------------------------\n");
do
{printf("\n 第%d种商品",i+1);
printf("\n 商品号:");
scanf("%d",&goods[i].num);
if(goods[i].num==0) break;
printf("\n 商品名称:");
scanf("%s",goods[i].name);
printf("\n 商品类别:");
scanf("%s",goods[i].kind);
printf("\n 商品总量:");
scanf("%d",&godds[i].amount);
printf("\n 商品上限:");
scanf("%d",&goods[i].goods_up);
printf("\n 商品下限:");
scanf("%d",&goods[i].goods_down);
printf("\n 进货价格:");
scanf("%d",&goods[i].in_price);
printf("\n 销售价格:");
scanf("%d",&goods[i].out_price);
printf("\n 进货数量:");
scanf("%d",&goods[i].in_num);
printf("\n 进货日期(yyyy-mm-dd):");
scanf("%d%d%d",&goods[i].in_time.year,&goods[i].in_time.month,&goods[i].in_time.date);
printf("\n 生产日期(yyyy-mm-dd):");
scanf("%d%d%d",%goods[i].pro_time.year,%goods[i].pro_time.month,&goods[i].pro_time.date);
printf("\n 生产厂家:");
scanf("%s",goods[i].factory);
printf("\n 保质期:");
scanf("%d",&goods[i].save_day);
i++;
}while(i<MAX);
printf("\n --%d种商品信息输入完毕!--\n",i);
sum=i;
printf("\n 按任意键返回主菜单!");
bioskey(0);
}

但是用VC++编译的时候却出现了下面这样的问题
left of '.name' must have class/struct/union type
left of '.kind' must have class/struct/union type
left of '.out_prince' must have class/struct/union type
left of '.pro_time' must have class/struct/union type
left of '.year' must have class/struct/union type
left of '.pro_time' must have class/struct/union type
left of '.month' must have class/struct/union type
left of '.pro_time' must have class/struct/union type
left of '.date' must have class/struct/union type
left of '.save_day' must have class/struct/union type
left of '.num' must have class/struct/union type
left of '.name' must have class/struct/union type


最后又换了TC2。0也是出现了点问题,改用WIN—TC才解决问题,可是我就不是很明白,VC++不是也可以用来编译C的吗?怎么会出现这样的问题呢!


一个来自华南师大通信工程的菜鸟,只学过一点学校教的C++和自学了一点C,大家不要笑他!哈哈……
2006-03-03 10:11
gang
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-2-28
收藏
得分:0 
对不起,现在我把函数改为void input_message(struct goods_type goods[20])后上面的两个问题确实都没了,可是在函数调用时它的参数我却又不知道怎么办了!
/*统计模块*/
void count_message()
{ int choice;
do
{ clrscr();
printf("\n\n\n *********统计商品信息*********\n\n");
printf(" 1.统计某商品的利润\n\n");
printf(" 2.统计某商品的进货量\n\n");
printf(" 3.统计同种名称不同货号商品库存量\n\n");
printf(" 4.返回主菜单\n\n");
printf(" 请选择(0~3):");
scanf("%d",&choice);
switch(choice)
{ case 1: count_profit(struct goods_type goods[20]);break;
case 2:count_in_amount();break;
case 3:count_full();break;
case 0:break;
}
}while(choice!=0);
}
就是上面有个count_profit()函数,我把它写成void count_profit(struct goods_type goods[20])之后编译就说case 1那边不能没有参数,于是我也改成上面那样,可是去出现了下面这样的错误,麻烦帮我看一下
error C2144: syntax error : missing ')' before type 'goods_type'

一个来自华南师大通信工程的菜鸟,只学过一点学校教的C++和自学了一点C,大家不要笑他!哈哈……
2006-03-03 10:51
快速回复:请问一下这个错误是什么意思
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073927 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved