2014-03-12 1 views
0

두 개의 c 파일이 있습니다. 1) aaa.c 2) bbb.c두 개의 c 파일과 파일에서 다른 파일로 값을 반환

bbb.c 파일 데이터 파일 (data.txt)의 행 번호를 계산합니다.

그런 다음 bbb.c에서 계산 된 행 번호를 aaa.c에 포함시키고 싶습니다. bbb.c에

#include<stdio.h> 
#define ROW "linenumber" 

aaa.c 예를 들면

,

#include<stdio.h> 

int main() 
{ 
    FILE *fp = fopen("bond.txt", "r"); 
    int ch; 
    int count =0 ; 
    do 
    { 
     ch = fgetc(fp); 
     if(ch=='\n') count++; 
    }while(ch != EOF); 

    return count; 
} 

난에 그 LINENUMBER에 bbb.c로부터 계산 된 값 (카운트)를 사용하고자 "# 행"linenumber ""정의하십시오.

내가 어떻게 할 수 있으며 aaa.c와 bbb.c를 컴파일하는 방법은 무엇입니까?

+0

외부 사용 ..... –

+0

매크로는 [번역 단위] (http://en.wikipedia.org/wiki/Translation_unit_%28programming%29)에서만 볼 수 있습니다. –

+0

두 파일 별도의 프로그램? 아니면 단일 프로그램에 링크되어 있습니까? –

답변

1

가능하면 bbb.c에서 변수를 선언하고 aaa.c 파일에서 extern을 사용하여 컴파일러에 알리고 해당 파일에 대해 로컬로 만듭니다. aaa.c

#include <stdio.h> 
extern int linenumbers; 
int main() { 
    ... 
} 

도 글로벌해야한다 변수가 aaa.c에 bbb.c 및 통근 글로벌 선언해야

int linenumbers; 

bbb.c에서

.

+0

@ JoachimPileborg 편집 됨. 그것은 오히려 전역 변수가 될 수 없습니다. –

+0

bbb.c는 data.txt의 행 번호를 계산해야합니다. 예를 들어, data.txt 파일에는 10 개의 행이 있고 linenumber는 aaa.c에 있습니다. –

+0

@ChangWoonJang bbb.c의 전역 변수 값이 10이되면 aaa.c에 외부 변수가 추가되어 aaa.c에서 액세스 할 때 값이 10이됩니다. –

0

원하는 작업을 2 회 컴파일해야합니다. 물론 bbb.c로 프로젝트를 빌드하고, 실행 파일을 실행하고, 번호를 기억하고, aaa.c를 파싱하고, ROW 대신이 번호를 넣고, 두 파일을 다시 컴파일하는 빌드 스크립트를 만들 수 있습니다.하지만 무엇을 위해서입니까?

로직이 런타임에 값을 필요로하는 경우 런타임에 ROW를 사용하면됩니다. 배열 할당에 대해 smth이고 malloc을 사용하여 메모리를 할당한다고 가정합니다. 일을 그렇게 복잡하게 만들 필요가 없습니다.