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