分离代码组织

时间:2009-10-28 20:24:22

标签: objective-c buffer zlib

我正在构建一个拉链应用程序,但它有一个声明,我想在另一个文件(compress-file.m)中将它分开,但只有当我分离文件时,我在使用变量进行编译时出错,看到它:

[ubuntu@eeepc:~/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 };

看一些compress-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中进行开发。 我需要做些什么来纠正这个问题?

2 个答案:

答案 0 :(得分: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 :(得分:1)

main.m看起来需要#include <limits.h>。它似乎还需要包含一个描述compressFile的标题(我猜你已经进入了compress-file.m