2014-03-12 122 views
0

我有兩個c文件。 1)aaa.c 2)bbb.c兩個c文件並從一個文件返回值到另一個文件

bbb.c文件計算數據文件(data.txt中)的行號。

然後,我想包括在bbb.c計入aaa.c.行號

例如,在aaa.c

#include<stdio.h> 
#define ROW "linenumber" 
在bbb.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; 
} 

我想用從bbb.c計算出的值(計數)在該行號「#define行」linenumber「」。

我怎樣才能做到這一點,如何編譯aaa.c和bbb.c toghether?

+0

使用extern ..... –

+0

一個宏只在[翻譯單元](http://en.wikipedia.org/wiki/Translation_unit_%28programming%29)中可見,其定義如下。 –

+0

這兩個文件單獨的程序?或者它們被鏈接到單個程序中? –

回答

1

如果可能的話,你可以在聲明變量bbb.c和使用的extern在aaa.c文件告訴編譯器,它使局部的文件。

在aaa.c

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

bbb.c

int linenumbers; 

的變量必須在aaa.c聲明中bbb.c和extern全球也應該是全球性的。

+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在運行時 - 我想這是不便使用數組的分配,使用malloc分配內存。沒有理由讓事情變得如此複雜。

相關問題