Pergunta

Estou construindo um aplicativo com zíper, mas ele tem uma declaração de que quero separá-lo em outro arquivo (compact-file.m), mas somente quando separo os arquivos, recebi um erro ao compilar com uma variável, veja-o:

[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

Veja também a linha 7 do arquivo main.m:

char outFileName[PATH_MAX] = { 0 };

E veja algumas linhas de compacto-arquivo.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");

Sei que essa é a extensão Objective-C, mas é apenas porque, quando resolvo esse problema, precisarei continuar o desenvolvimento no Objective-C. O que eu preciso fazer para corrigir isso?

Foi útil?

Solução

Path_max nem sempre é definido incluindo <limits.h>. Se você quiser usá -lo, provavelmente precisará recorrer ao fragmento:

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

Você até incluiu limits.h em seu programa principal? Caso contrário, você precisa fazê -lo.

Outras dicas

Parece main.m precisa de #include <limits.h>. Também parece que precisará incluir um cabeçalho descrevendo o Compressfile (que eu acho que você se mudou para compress-file.m.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top