【问题标题】:Conflicting types when calling a method调用方法时的类型冲突
【发布时间】:2014-03-06 00:10:44
【问题描述】:
#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’声明在这里”

【问题讨论】:

  • 调用时,PrintBoard() 范围内没有原型另外:main() 返回 int(范围内有(n 不可见)原型)
  • 未回答的问题是:为什么您的编译器接受 void main() ?出于同样的原因,这是非常错误的。

标签: c implicit-declaration


【解决方案1】:

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

void printBoard(void);

void main(...)

【讨论】:

  • 将在 6 分钟内接受作为答案。感谢您的帮助。
【解决方案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);

【讨论】:

    【解决方案3】:

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

    通过以下方式解决问题:

    1) 将void printBoard(void)的定义移到main or之上

    2) 在main 上方添加声明。就这一行:void printBoard(void);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 2017-09-01
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多