调用方法时的类型冲突

时间:2014-03-06 00:10:44

标签: c implicit-declaration

#include <stdio.h>
#define MAX 9

void main (int argc, char *argv[]) {

  printBoard();

}

void printBoard(void) {
  int row,col;
  row=col=0;

  for(row;row<MAX;row++)   //row navigation
    for(col;col<MAX;col++){//column navigation
      printf("r:%d,c:%d",row,col);
    }/*End Column Nav*/

  printf("\n");
}

我不确定我在这里做错了什么 - 我得到的错误:

“警告:'printBoard'的冲突类型[默认启用] 注意:先前隐含的'printBoard'声明就在这里“

3 个答案:

答案 0 :(得分:3)

尝试为printBoard以上main()添加function prototype,例如

void printBoard(void);

void main(...)

答案 1 :(得分:2)

你在调用后声明了函数。

#include <stdio.h>
#define MAX 9

void printBoard(void) {
  int row,col;
  row=col=0;

  for(row;row<MAX;row++)   //row navigation
    for(col;col<MAX;col++){//column navigation
      printf("r:%d,c:%d",row,col);
    }/*End Column Nav*/

  printf("\n");
}
void main (int argc, char *argv[]) {

  printBoard();

}

这应该很好。

编辑:你应该在调用任何函数之前声明所有函数。
像void printBoard(void);

答案 2 :(得分:1)

您在声明方法之前调用该方法。

通过以下方式解决问题:

1)将void printBoard(void)的定义移到main或

之上

2)在main之上添加声明。只需这一行:void printBoard(void);