佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 928|回复: 18

各位大哥!急call!!! help please...(problem solved,thanks)

[复制链接]
思域仔 该用户已被删除
发表于 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

我不明白有什么问题?
死命讲我的 { 有问题。

[ 本帖最后由 思域仔 于 4-5-2006 06:39 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
我的J是前面的次数,不用理他
回复

使用道具 举报

思域仔 该用户已被删除
 楼主| 发表于 2-5-2006 11:49 PM | 显示全部楼层
我只想懂为什么 { 有问题
回复

使用道具 举报

发表于 3-5-2006 12:05 AM | 显示全部楼层
可能要看整个程式才知道。。。
回复

使用道具 举报

Follow Us
发表于 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。。。只是大概看过。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 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,这就是不完美。

我稍微改了一下你的代码,你查查讯息吧。
回复

使用道具 举报


ADVERTISEMENT

发表于 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 22-9-2024 01:31 PM , Processed in 0.088247 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表