[問題] 有關gcc 分開編譯

看板C_and_CPP (C/C++)作者 (b8888)時間16年前 (2009/09/08 17:09), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/2 (看更多)
各位大大好,小弟有一個程式 file.c -------- #include <stdio.h> /* 宣告 printf, scanf, fopen,fprintf...*/│ #include <string.h> /* 宣告 strcmp() 的原型 */ void line(FILE *fp) /* 列出分隔線 */ { int i; char aa[]="11111111111111111"; fprintf( fp, aa ); for( i=0 ; i<60 ; i++ ) fprintf( fp, "-" ); fprintf( fp, "\n" ); } void main(void) { FILE *fp; /* 檔案指標 */ char filename[20]; /* 輸出報表的檔名 */ char client[40]; /* 交易對象名稱 */ float amount; /* 交易金額 */ float total=0; /* 總金額 */ printf("File to record the amount : "); scanf("%19s", filename ); /* 讀取輸出報表檔名 */ fp = fopen( filename, "w"); /* 開啟報表檔 */ line( fp ); fprintf( fp, "%-40s $%f\n", "***** Total", total ); line( fp ); fclose(fp); /* 關閉報表檔 */ } 可以使用 gcc file.c -o file.exe 產生執行檔 但是~ 我想拆成二個檔案 file2.c --------- #include <stdio.h> /* 宣告 printf, scanf, fopen,fprintf...*/│ #include <string.h> /* 宣告 strcmp() 的原型 */ int main(void) { FILE *fp; /* 檔案指標 */ char filename[20]; /* 輸出報表的檔名 */ char client[40]; /* 交易對象名稱 */ float amount; /* 交易金額 */ float total=0; /* 總金額 */ printf("File to record the amount : "); scanf("%19s", filename ); /* 讀取輸出報表檔名 */ fp = fopen( filename, "w"); /* 開啟報表檔 */ line( fp ); fprintf( fp, "%-40s $%f\n", "***** Total", total ); line( fp ); fclose(fp); /* 關閉報表檔 */ } 及 line.c -------- #include <stdio.h> /* 宣告 printf, scanf, fopen,fprintf...*/│ void line(extern FILE *fp) /* 列出分隔線 */ { int i; char aa[]="11111111111111111"; fprintf( fp, aa ); for( i=0 ; i<60 ; i++ ) fprintf( fp, "-" ); fprintf( fp, "\n" ); } 想請問各位大大程式該何修改? 我有試著在line(extern FILE *fp) 加入extern 但是還是有問題~~ 我先用 C:\Dev-Cpp\bin>gcc -c line.c line.o 但有問題? line.c:1:65: warning: extra tokens at end of #inc line.c:2: error: storage class specified for para line.c:10:4: warning: no newline at end of file 編譯的方法是先 gcc -c line.c line.o gcc -c file2.c file2.o 再 gcc line.o file2.o file.exe 這樣對嗎?? 還有没有其他的方法?? 或是有什麼資料可以供我參考(有關分開編譯方面) 謝謝您的回應 ps' 小弟是初學者,不敬之處見諒見諒 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.40.177.195

09/08 17:16, , 1F
line 的參數為什麼要放 extern?
09/08 17:16, 1F

09/08 17:17, , 2F
gcc line.o file2.o -o file.exe
09/08 17:17, 2F

09/08 17:27, , 3F
是不是都少了 -o
09/08 17:27, 3F
文章代碼(AID): #1AfXytKo (C_and_CPP)
文章代碼(AID): #1AfXytKo (C_and_CPP)