2011-03-07 38 views
0

//fpoin1.c沒有找到使用的extern:得到 '找不到文件'

#include<stdio.h> 
#include<conio.h> 
#include<fpoin.c> 
void swap(int,int); 
void main() 
{ 
int i=0; 
i++; 
if(i<=5) 
{ 
printf("%d",i); 
swap(59,23); 
getch(); 
} 

//fpoin.c

#include<stdio.h> 
#include<conio.h> 
extern int i; 
void swap(int ,int); 
int main() 
{ 
int i=3; 
int p,q; 
swap(p,q); 
printf("\np=%dq=%d",p,q); 
getch(); 
return 0;  
} 
void swap(int p,int q) 
{ 
int t=p; 
p=q; 
q=t; 
} 

當我編譯fpoin1,它說:「fpoin.c 「,但都在同一個目錄中。 缺什麼?

回答

4

這應該修復它:

#include "fpoin.c" 

使用""<>影響編譯器如何搜索文件/頭。您應該使用<>作爲「系統」,「庫」包括,並且在包含您自己的文件時使用""

但是,你不應該包括.c文件。你應該編譯每一個,然後使用它們將它們鏈接在一起。這個海灣合作委員會的一行:gcc -Wall -o appname fpoin.c fpoin1.c

你還需要決定你想要使用的兩個main()函數中的哪一個。您必須正好有一個main()

此外,您的swap函數將無法按預期工作,因爲您按值傳遞其參數。試試這個:

void swap(int * p, int * q) { 
    int t=*p; 
    *p=*q; 
    *q=t; 
} 

... 

swap(&p, &q) 

當然,你不能再調用swap(59,23) - 有沒有變量進行修改。 swap(59,23)應該做什麼?

+0

是啊,我忘了我搞砸了我的兩個不同的files.thanks我有固定的兩個主要問題,刪除一個。 – John

2

人們通常只包括.H文件,鏈接其他.C文件,但如果你要包括本地文件,它應該"..."完成,而不是<...>分隔符,因此:

#include "fpoin.c" 

<...>表示系統頭。

在你的情況下,只需切換到鏈接不會很不夠好,因爲你main()將是多重定義的兩種方式。你可能想重新考慮一下你的模塊化。

+0

是的,謝謝我有這個問題。感謝大家。 – John

2

#include中使用<>對編譯器說對於包含「標準頭文件」。標準頭文件不一定是磁盤上的真實文件:編譯器使用魔術來包含標準頭文件

要包括實時文件,使用引號的#include

#include "fpoin.c" 

一件事:不要使用包括代碼。只用聲明書寫文件幷包含它們(最後文件的擴展名爲.h)。