2014-02-06 2 views
1

저는 신참 프로그래머입니다. 저는 C를 배우려고합니다. 주 프로그램에서 다른 파일을 실행하려고합니다. 그러나 컴파일 시간 오류가 발생합니다. 내 IDE는 말한다 : 오류. 함수 print의 암시 적 선언 또한 ROW와 COL이 여기에 정의되어 있지 않다고 말합니다. 물론 나는 3 개의 파일을 갖고 있는데, 나는 왜 이런 오류가 발생하는지 알지 못한다. 나는 당신이 생각한 것처럼 헤더 파일에서 ROW와 COL을 적절하게 정의했다고 생각합니다. 누군가이 간단한 코드로 문제를 볼 수 있습니까? 당신도 p750_eightqueens.c에서 헤더 파일을 포함 할 필요가왜이 정의 지시문이 작동하지 않는 것 같습니까?

//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; 그것을 요점까지 끓여 내려고 노력하십시오. – thang

+0

'p750_eightqueens.c'는 실제로'#include "p750_eightqueens.c"라인을 포함하고 있습니까? – unwind

답변

5

: 지금은 다음과 같은 코드가 있습니다. .c 파일이 서로 독립적으로 컴파일되므로 p750_eightqueens.c은 정의 및 함수 선언에 대해 알지 못합니다.

C 프로그램을 컴파일하는 경우 각 컴파일 단위 (.c -file)는 자체 컴파일되며 해당 파일에 사용 된 모든 포함 및 선언이 필요합니다. 그런 다음 링커에서 하나의 실행 파일로 결합 된 객체 파일 (.o)이 있습니다. 링커는 사용 된 함수의 구현을 검색하여 서로 다른 컴파일 단위가 다른 함수를 호출 할 수 있도록이 함수를 결합합니다.

+0

감사합니다. 프로그램에 다른 파일을 추가 한 것은 이번이 처음이므로 미안합니다. –

+0

C에서 컴파일 과정에 익숙하지 않은 경우를 대비하여 몇 가지 설명을 추가했습니다. –

+0

매우 감사드립니다! –

관련 문제