查看: 941|回复: 18
|
各位大哥!急call!!! help please...(problem solved,thanks)
[复制链接]
|
|
void enter(opt2)
{
i=1,count=1;
while(count<=j)
{
printf("\n\t\t\t\t%s",S.name);
printf("\n\t\t\tEnter the Mark:\t");
scanf("%d",&S.test1);
i++, count++;
}
}
error C2448: '<Unknown>' : function-style initializer appears to be a function definition
我不明白有什么问题?
死命讲我的 { 有问题。
[ 本帖最后由 思域仔 于 4-5-2006 06:39 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 2-5-2006 10:49 PM
|
显示全部楼层
原帖由 思域仔 于 2-5-2006 10:24 PM 发表
void enter(opt2)
{
i=1,count=1;
while(count<=j)
{
printf("\n\t\t\t\t%s",S.name);
printf("\n\t\t\tEnter the Mark:\t");
scanf("%d",&S.test1);
i++, count++;
}
}
error C2448: '<Unknown>' : function-style initializer appears to be a function definition
你的 j 是什么? |
|
|
|
|
|
|
|
发表于 2-5-2006 10:50 PM
|
显示全部楼层
我没学到这么深的,帮不到你,对不起,去抄别人的啦! |
|
|
|
|
|
|
|

楼主 |
发表于 2-5-2006 11:48 PM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 2-5-2006 11:49 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 3-5-2006 12:05 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 3-5-2006 01:11 AM
|
显示全部楼层
不好意思,现在没空帮你慢慢看,我明天考试。。。
考完试我帮你看看吧!
明晚让你知道。。。
还有,怎么你不用function让user key in 名和分数?
我以前做都是用function的。。。有问题也比较容易改。。。 |
|
|
|
|
|
|
|
发表于 3-5-2006 01:24 AM
|
显示全部楼层
大哥!你的J根本没value。。。
你没assign value给它。。。
还有你的function,那些void enter(opt2),void view(opt2)等,
不要放同样的名字。。。
括弧里是要pass进去的value,所以你括弧里的opt2或opt3是没影响的,照成你的 function名有几个现在是一样的。试试改名先。。。
暂时我只发现到这些,因为还没空test。。。只是大概看过。。。 |
|
|
|
|
|
|
|
发表于 3-5-2006 01:06 PM
|
显示全部楼层
原帖由 思域仔 于 2-5-2006 10:24 PM 发表
void enter(opt2)
{
i=1,count=1;
while(count<=j)
{
printf("\n\t\t\t\t%s",S.name);
printf("\n\t\t\tEnter the Mark:\t");
scanf("%d",&S.test ...
不能i++, count++;
要用i++; count++; |
|
|
|
|
|
|
|
发表于 3-5-2006 01:36 PM
|
显示全部楼层
void enter(opt2)
void view(opt2)
这些都没意义。opt2, opt3, opt4是什么类型的data?必须给与定义。例如:
void enter(int opt2)
{
...
}
或者
void enter(opt2) int opt2;
{
...
}
或者干脆把opt2,opt3,opt4拿掉,这样就不会出现error C2448了,但是这时会有function形态一样的抱错。因为你有几个一样的function,这是不允许的。C++能support function overloaded(function名字可以一样)但条件是return type或者input parameter type必需不一样。例如:
void enter(int opt2)
{
...
}
或者
int enter(int opt2)
{
...
}
或者
void enter(char opt2)
{
...
}
在C++里,这三个都能同时存在(C program就不可以)。但是照你的代码来看,你没用到input parameter,所以干脆把opt2, opt3, opt4这些input parameter都拿掉,把function名字都换掉就行了。 |
|
|
|
|
|
|
|
发表于 3-5-2006 01:47 PM
|
显示全部楼层
原帖由 ctrl 于 3-5-2006 01:06 PM 发表
不能i++, count++;
要用i++; count++;
i++, count++;//是允许的。 |
|
|
|
|
|
|
|
发表于 3-5-2006 04:31 PM
|
显示全部楼层
那么多高手出马,看来不用我班门弄斧了。。。
可以去睡大觉了!
各位晚安! |
|
|
|
|
|
|
|

楼主 |
发表于 3-5-2006 11:34 PM
|
显示全部楼层
原帖由 qiyan 于 3-5-2006 01:36 PM 发表
void enter(opt2)
void view(opt2)
这些都没意义。opt2, opt3, opt4是什么类型的data?必须给与定义。例如:
void enter(int opt2)
{
...
}
或者
void enter(opt2) int opt2;
{
...
}
或 ...
还是不行,一样的问题
还有什么方法?
我是用c 的,不是 c++ |
|
|
|
|
|
|
|

楼主 |
发表于 3-5-2006 11:43 PM
|
显示全部楼层
我做的是可以省memory的
所以用function
当它执行case的时候,会转下去,执行完毕后才转回来
可不可以写个example 来看下。
不好意识,小弟学艺不精,所以请教各位大哥大姐 |
|
|
|
|
|
|
|
发表于 4-5-2006 08:47 AM
|
显示全部楼层
好久没写C++了,是不是不能用enter的名啊?改掉不要放enter一下。 |
|
|
|
|
|
|
|
发表于 4-5-2006 09:55 AM
|
显示全部楼层
原帖由 思域仔 于 3-5-2006 11:34 PM 发表
还是不行,一样的问题
还有什么方法?
我是用c 的,不是 c++
改了function名字及加了prototype就不会有error C2448了。可是你的program里还有其他的问题。
问题1:你每个function里都会用到S array。可是你没有declare它。你只在main function里的do while loop declare了一个struct student S[20]。它的scope不对,在do while外面就不能用S array了
solution1: 把他搬去global variable,就是在main function之前,define了struct student之后。这是最简单的但我觉得global variable不是很好的编程方法,所以用solution2。
solution2: 把他搬去main function里的第一行,do while loop之前。然后用call by reference的方法传进function里。这样就能达到你的省memory要求。
问题2:在一些function里你会用到continue,但是你的continue是在while loop之外。
solution1: 把continue拿掉。
其他问题:在一些地方及几个switch里边,你用到continue,一些地方的continue无意义,这些地方你用不用continue,它的flow还是一样。你可以放着,但这就是所谓的沉余代码,占用空间,不够精简。就譬如说:i++;; 和 i++; 一个用了两个分号,不是说不行,但你的程序就比别人多了一个character,这就是不完美。
我稍微改了一下你的代码,你查查讯息吧。 |
|
|
|
|
|
|
|
发表于 4-5-2006 01:24 PM
|
显示全部楼层
qiyan 说的没错。我这里补充一下...
简单一点,你有三组 enter() 与 view(),把它们改名。例如:
void enter1(void)
{
...
}
void view1(void)
{
....
}
void enter2(void)
{
...
}
void view2(void)
{
....
}
void enter3(void)
{
...
}
void view3(void)
{
....
}
记得,在文件顶端必须要define 它们的 prototype, e.g.:-
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void enter1(void);
void view1(void);
void enter2(void);
void view2(void);
void enter3(void);
void view3(void);
.....
void main()
{
.....
}
.......
另外,你的给予你function 的 parameter, opt2,opt3,opt4 都没有使用,因此放
(void) 或是 () 就可以了, e.g.:-
void enter1(void)
{
...
}
或是
void enter1()
{
...
}
都一样。 |
|
|
|
|
|
|
|
发表于 4-5-2006 05:23 PM
|
显示全部楼层
死仔!!跑来这里了啊!!
为什么你的
void enter(opt2)
void view (opt2)
void enter(opt3)
都没continue的啊?
void view (opt3)
void enter(opt4)
void view (opt4)
都有continue
学校着架没C
回家再慢慢帮你
default:printf("That is not a proper selection.\n");
printf("Please enter agian.\n");
continue; |
|
|
|
|
|
|
|

楼主 |
发表于 4-5-2006 06:25 PM
|
显示全部楼层
原来是要放在上面,
放在下面就不行了。
thanks to everyone who been here...
thanks a lot |
|
|
|
|
|
|
| |
本周最热论坛帖子
|