2014-02-06 48 views
1

我是一名菜鸟程序员。我正在努力学习C.我试图让一个主程序运行另一个文件。但是,我收到编译时错误。我的IDE说:错误。函数print的隐式声明,还有它说ROW和COL在这里没有定义。当然,我有3个文件,我不明白为什么我得到这些错误。我认为我在头文件中正确定义了ROW和COL,就像你应该这样做。有人可以看到这个简单的代码有问题吗?现在,我有以下代码:为什么这个define指令似乎不起作用?

//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

tl; dr。尝试将其归结为要点。 – thang

+0

'p750_eightqueens.c'实际上是否包含'#include“p750_eightqueens.c”'行? – unwind

回答

5

您需要在p750_eightqueens.c头文件了。 您的.c文件彼此独立编译,因此您的p750_eightqueens.c不知道您的定义和函数声明。

如果编译C程序,每个编译单元(.c -file)都是自己编译的,并且需要该文件中使用的所有包含和声明。之后,你有目标文件(.o),然后由链接器将它们合并为一个可执行文件。链接器搜索所使用函数的实现并将它们放在一起,以便不同的编译单元可以在其他函数中调用函数。

+0

谢谢。这是我第一次将其他文件添加到我的程序,所以很抱歉,如果这是一个愚蠢的问题。 –

+0

我添加了一些解释,以防您不熟悉C编译过程。 –

+0

非常有用谢谢! –

相关问题