2009-10-28 30 views
0

我正在構建一個拉鍊應用程序,但它有一個聲明,我想將它分離到另一個文件(compress-file.m)中,但僅當我分開文件時出現錯誤時具有可變編譯,看到它:將要組織的分離代碼

[[email protected]:~/Desktop] make 
This is gnustep-make 2.0.2. Type 'make print-gnustep-make-help' for help. 
Making all for app LeafZip... 
Creating LeafZip.app/.... 
Compiling file main.m ... 
main.m: In function ‘main’: 
main.m:7: error: ‘PATH_MAX’ undeclared (first use in this function) 
main.m:7: error: (Each undeclared identifier is reported only once 
main.m:7: error: for each function it appears in.) 
main.m:12: warning: implicit declaration of function ‘compressFile’ 
main.m:7: warning: unused variable ‘outFileName’ 
make[1]: *** [obj/main.o] Error 1 
make: *** [LeafZip.all.app.variables] Error 2 

另見main.m文件的第7行:

char outFileName[PATH_MAX] = { 0 }; 

而看到壓縮-file.m的一些線路:

#include <stdio.h> 
#include <zlib.h> 
#include <limits.h> 

/* Buffer to hold data read */ 
char buf[BUFSIZ] = { 0 }; 
size_t bytes_read = 0; 
gzFile *out = gzopen(outFileName, "wb"); 

我知道這是Objective-C擴展,但這只是因爲當我解決這個問題時,我需要繼續在Objective-C中進行開發。 我需要做些什麼來糾正這個問題?

+1

而你的問題是 – 2009-10-28 20:31:08

回答

3

PATH_MAX並不總是通過包含<limits.h>來定義。如果你想使用它,你可能需要重新使用它片段:。

#include <limits.h> 
#ifndef PATH_MAX 
#define PATH_MAX _POSIX_PATH_MAX /* Or possibly _XOPEN_PATH_MAX */ 
#endif /* PATH_MAX */ 

你甚至還包括limits.h在你的主程序如果沒有,你需要做這樣

1

看起來像main.m需要#include <limits.h>。它似乎還需要包含描述compressFile的頭文件(我想你已經進入了compress-file.m

+0

它已經這樣,在這兩個文件我已經包括'? limits.h' – 2009-10-28 20:40:09

+0

而'limits.h'實際上定義了'PATH_MAX'? – 2009-10-28 20:42:50