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
signature.asc
Description: PGP signature

