[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ajuda em declaração



On Tue, Apr 05, 2016 at 08:38:32AM -0300, Antonio Terceiro wrote:
> On Mon, Apr 04, 2016 at 09:37:44AM -0300, Junior Santos wrote:
> > -#if defined(__FreeBSD__)
> > +#if defined(__FreeBSD_Kernel__)
> > 
> > Como posso definir estas variasse de forma que elas
> > usem se possível uma ou outra.
> 
> essas macros são pré-definidas no sistema em questão, você não precisa
> se preocupar em definir elas você mesmo.
> 
> > Tenho um pacote e preciso ter as duas, pode ser que
> > alguma arquitetura de FreeBSD precise desta declaração.
> > Seria esta a forma correta :
> > 
> > "#if defined (__FreeBSD__) || defined (__FreeBSD_Kernel__)”
> 
> se você precisa ter _as duas_ (e não qualquer umas das duas), você quer
> && ao invés de ||:
> 
> #if defined(__FreeBSD__) && defined(__FreeBSD_Kernel__)

2 coisas aqui:

0) o nome de uma delas está errado, é __FreeBSD_kernel__ com o "k" de
"kernel" minúsculo

1) as duas flags só vão estar definidas, pelo que eu entendo, no FreeBSD
propriamente dito, no Debian GNU/kfreebsd só a __FreeBSD_kernel__ vai
estar. Fiz o seguinte teste numa porterbox kfreebsd-amd64 do Debian:

$ cat test.c
#include <stdio.h>

int main() {
#if defined (__FreeBSD_kernel__)
  printf("freebsd kernel\n");
#endif
#if defined(__FreeBSD__)
  printf("freebsd\n");
#endif
  return 0;
}
$ make test
cc     test.c   -o test
$ ./test
freebsd kernel

mais informações:
http://glibc-bsd.alioth.debian.org/porting/PORTING

Attachment: signature.asc
Description: PGP signature


Reply to: