1980469235 发表于 2014-5-30 23:54:44

为什么函数调用不了

#include <stdio.h>
#include <Windows.h>

//清屏
void cls_screen(char a) //定义函数这里是清除屏幕上面的字
{
COORD xy={0,0};//显示目前坐标 COORD
long byw;
//STD_INPUT_HANDLE 输入句柄 STD_OUTPUT_HANDLE 输出句柄STD_ERROR_HANDLE 错误句柄
HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE); //GetStdHandle 获取输入输出句柄
FillConsoleOutputCharacter(hout,a,2000,xy,&byw);//FillConsoleOutputCharacter填充字符
return;
}
//            列    行
void gotoxy(int x,int y) //定义函数   移动光标位置
{
COORD xy={0,0};//显示目前坐标 COORD

HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE); //输出   HANDLE 手把句柄
xy.X=x;
xy.Y=y;
    SetConsoleCursorPosition(hout,xy);//SetConsoleCursorPosition移动光标位置(设置 坐标)
return;
}
//绘制方框
#define X 22
#define Y 6
void drawM(void) //定义函数
{
int i;
//到达x,y
gotoxy(X,Y);
//上边--------------------
printf("┏");
for (i=0;i<=12;i++)
{
printf("━");
}
printf("┓");
//左边

for (i=0;i<15;i++)
{
gotoxy(X,Y+1+i);//Y+行+i(循环)
printf("┃");
}
//右边

for (i=0;i<15;i++)
{
gotoxy(X+28,Y+1+i);//X(列)+28,Y(行)+1(循环一次加一行)+i(循环)
printf("┃");
}
//下边
gotoxy(X,Y+16);
//上边--------------------
printf("┗");
for (i=0;i<=12;i++)
{
printf("━");
}
printf("┛");
return;
}
void drawmenu(void)
{
gotoxy(X+3,Y+3);
printf("1->菜单选择一");
gotoxy(X+3,Y+3+2);
printf("   菜单选择二");
gotoxy(X+3,Y+3+2+2);
printf("   退出");
gotoxy(0,0);
}
int selmenu_Num = 0;
int selMenu(void)
{
int ch = 0;
while(1)
{
ch = getch();
//gotoxy(0,0);
if(ch == 13)
{
   return selmenu_Num;
}
switch(ch)
{
case 72: //上光标
   selmenu_Num--;
   if(selmenu_Num < 0)
   {
    selmenu_Num = 2;
   }
   break;
case 80: //下光标
   selmenu_Num++;
   if(selmenu_Num > 2)
   {
    selmenu_Num = 0;
   }
   break;
}
gotoxy(0,0);

switch(selmenu_Num)
{
case 0:
   gotoxy(X+3,Y+3);
   printf("1->");
   gotoxy(X+3,Y+3+2);
   printf("   ");
   gotoxy(X+3,Y+3+2+2);
   printf("   ");
   gotoxy(0,0);
   break;
case 1:
   gotoxy(X+3,Y+3);
   printf("   ");
   gotoxy(X+3,Y+3+2);
   printf("2->");
   gotoxy(X+3,Y+3+2+2);
   printf("   ");
   gotoxy(0,0);
   break;
case 2:
   gotoxy(X+3,Y+3);
   printf("   ");
   gotoxy(X+3,Y+3+2);
   printf("   ");
   gotoxy(X+3,Y+3+2+2);
   printf("3->");
   gotoxy(0,0);
   break;
}
}
return selmenu_Num;
}
int main(void)
{   
system("title qq");
system("color 0a");
//system("dir");
cls_screen(' ');
//cls_screen(' ');
//gotoxy(3,2);//调用函数移动光标位置
//绘制方框
//drawM(); //调用函数绘制方框
//drawmenu(); //上下选择健
//selMenu();//动态菜单
//SetWindowPos(GetConsoleWindow(),HWND_NOTOPMOST,133,133,800,600,SWP_SHOWWINDOW);错误框的高度
checkerboard(); //棋盘
playeane();
getchar();

return 0;
}

-------------函数调用
#define CHESS_X 28//列
#define CHESS_Y 6   //行
#define CHESS_WIDTH 12*2//宽
#define CHESS_HIGHT 18//高
extern void gotoxy(int,int);

void checkerboard(void)//checkerboard 画棋盘
{
int i;
gotoxy(CHESS_X,CHESS_Y); //给函数赋实值
for(i = 0; i < CHESS_HIGHT; i++) //左
{
gotoxy(CHESS_X,CHESS_Y+i);//左循环行
printf("┃");
}
gotoxy(0,0);
for(i = 0; i < CHESS_HIGHT; i++)//右
{//       列    +宽(宏12*2)
gotoxy(CHESS_X+CHESS_WIDTH,CHESS_Y+i);
printf("┃");
} //    列       行       高
gotoxy(CHESS_X,CHESS_Y+CHESS_HIGHT);
printf("┗");//底部转角
for(i = 1; i < CHESS_WIDTH / 2; i++)
{
printf("━"); //底部链接线
}
gotoxy(CHESS_X+CHESS_WIDTH,CHESS_Y+CHESS_HIGHT);
printf("┛");//底部转角

return;
}
typedef struct _chess_data//一个结构
{
char chessflag; //4种形态保留
char data; //数据
COORD xy; //位置POINT
}chess_data; //定义结构变量
//20种不成形态的棋子
chess_data DownChessData={0};
void InitChessData(void)
{
//□□
//□□ 类型状态
DownChessData.xy.X=CHESS_X+4; //行坐标
DownChessData.xy.Y=CHESS_Y+0;//列坐标
DownChessData.data=1;
DownChessData.data=1;
DownChessData.data=1;
DownChessData.data=1;
   //状态-3 =状态
   DownChessData=DownChessData=DownChessData=DownChessData;
}
void ShowChess(chess_data chess)
{
int x,y;
for(x = 0; x <= 3; x++)
{
for(y = 0; y <= 3; y++)
   if(chess.data)
   {
    gotoxy(chess.xy.X+x*2,chess.xy.Y+y);
    printf("□");
   }
}
}
void playeane(void)
{
InitChessData();
ShowChess(DownChessData);
}
调用不了函数,望大神指导(要是只用main()页分开实现的话不出错,为什么调用函数就出错)

txt888 发表于 2014-5-30 23:54:45

你把你写的函数的位置都调整到 main()函数的前面。

s0512 发表于 2014-5-31 00:15:57

会不会有些库没包含进来呀

牡丹花下死做鬼 发表于 2014-5-31 07:49:09

怀疑库文件没包含

1980469235 发表于 2014-5-31 11:19:16

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdarg.h>
#include <share.h>
#include <Windows.h>

加上去也是一样

1980469235 发表于 2014-6-4 00:09:03

txt888 发表于 2014-6-3 11:13 static/image/common/back.gif
你把你写的函数的位置都调整到 main()函数的前面。

把函数都写到main()前面是不会错,我现在就是想知道把函数写在main()后面,可不可以,怎么调用

ravenhu13 发表于 2014-6-4 00:16:41

1980469235 发表于 2014-6-4 00:09 static/image/common/back.gif
把函数都写到main()前面是不会错,我现在就是想知道把函数写在main()后面,可不可以,怎么调用

可以,但是在main前必须就声明函数了才可以把函数的实现写后面

1980469235 发表于 2014-6-4 13:09:21

ravenhu13 发表于 2014-6-4 00:16 static/image/common/back.gif
可以,但是在main前必须就声明函数了才可以把函数的实现写后面

试了好多遍了,还是没实行,你能让它运行,分就给你
页: [1]
查看完整版本: 为什么函数调用不了