質問
ジッパーアプリケーションを作成していますが、別のファイル(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での開発を継続する必要があるからです。 これを修正するために必要なこと
解決
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
を含めましたか?そうでない場合は、そうする必要があります。
他のヒント
main.m
は#include <limits.h>
である必要があるように見えます。また、compressFileを説明するヘッダーを含める必要があるようです(compress-file.m
に移動したと思います。
所属していません StackOverflow