我是这里的菜鸟程序员。我正在努力学习C.我正在尝试让主程序运行另一个文件。但是,我收到编译时错误。我的IDE说:错误。函数print的隐式声明也表示ROW和COL没有在这里定义。当然我有3个文件,我不明白为什么我会收到这些错误。我想我在头文件中正确定义了ROW和COL,就像你应该的那样。有人能看到这个简单代码的问题吗?现在我有以下代码:
//p750_eightqueens.h
#ifndef P750_EIGHTQUEENS_H_INCLUDED
#define P750_EIGHTQUEENS_H_INCLUDED
#define ROW 8
#define COL 8
void go(int row, int col);
void print(int array[ROW][COL]);
#endif // P750_EIGHTQUEENS_H_INCLUDED
//p750_eightqueens.c
void go(int row, int col) {
int a[ROW][COL],i,j;
for(i=0;i<ROW;i++) {
for(j=0;j<COL;j++){
a[i][j]=(i==row&&j==col?1:0);
}
}
print(a);
}
void print(int array[ROW][COL]) {
int i,j;
for(i=0;i<ROW;i++) {
for(j=0;j<COL;j++){
printf("%i",a[i][j]);
if (j!=COL-1) printf(" ");
}
printf("\n");
}
}
//now in main.c
#include<stdio.h>
#include<stdlib.h>
#include "p750_eightqueens.h"
int main(){
go(4,4);
return 0;
}
答案 0 :(得分:5)
您还需要在p750_eightqueens.c
中添加头文件。
您的.c
文件彼此独立编译,因此您的p750_eightqueens.c
不了解您的定义和函数声明。
如果您编译C程序,则每个编译单元(.c
- file)都是自己编译的,并且需要该文件中使用的所有包含和声明。之后,您将拥有目标文件(.o
),然后由链接器将其合并为单个可执行文件。链接器搜索已使用函数的实现并将它们放在一起,以便不同的编译单元可以调用其他函数。