As macros são encontradas aqui:
As diretrizes gerais são encontradas aqui:
Envie atualizações/correções para o predef-contribuir ou por meio de solicitações de tração no GitHub.
Os compiladores C e C ++ definem automaticamente certas macros que podem ser usadas para verificar os recursos do compilador ou do sistema operacional. Isso é útil ao escrever software portátil.
Essas páginas listam várias macros predefinidas do compilador que podem ser usadas para identificar padrões, compiladores, sistemas operacionais, arquiteturas de hardware e até bibliotecas básicas de tempo de execução em tempo de compilação.
Por exemplo, se queremos usar um tipo de ponteiro genérico ou opaco, usamos ponteiros vazios. No entanto, os compiladores antigos da K&R (desde o momento anterior ao primeiro padrão ANSI C) não suportam indicadores de vazios. Em vez disso, podemos definir nosso próprio tipo:
#if defined( __STDC__ ) || defined( __cplusplus ) || defined( _MSC_EXTENSIONS )
typedef void * t_pointer ;
#else
typedef char * t_pointer ;
#endif Outro exemplo, o Microsoft Visual C ++ versão 4.2 adicionou um Pragma para reduzir os tempos de compilação, incluindo apenas um arquivo uma vez (se _MSC_VER não estiver definido, ele avaliará para 0 (zero) - no entanto, alguns compiladores podem reclamar de uma macro indefinida)
#if defined( _MSC_VER ) && ( _MSC_VER >= 1020 )
#pragma once
#endifAs macros contidas nessas páginas foram obtidas através da documentação do fornecedor, o script define, colaboradores e código-fonte de terceiros. Nenhuma garantia sobre a correção das macros é dada.
Uma alternativa frequentemente usada é o Autoconf, que é uma ferramenta mais poderosa para examinar vários tipos de recursos, incluindo opções de compilação. No entanto, o Autoconf é bastante centrado no UNIX e requer uma camada UNIX em outras plataformas (por exemplo, cygwin no Windows). Outras alternativas são Buildtool, Cmake, Scons, PMK, Jam, Ant e Bakefile.
Bjorn Reese, Daniel Stenberg, Greg Roelofs, Steven G. Johnson, Wlodzimierz ABX Skiba, Marc Finet, Philip Newton, Mitchell Charity, Christian Klutz, Seo Sanghyeon, Chris Adami, Geoff Clare, Dan Fandrich, Mike Gorchak, Yuri D'Elia, Gynvael Coldwind, Alain Tauch, Vadim Zeitlin, Steve White, Thomas David Rivers, Tom Honermann, Martin Mitas, Dinesh Chhadwa, Erik Faye-Lund, Leo Davis, Paul Hsieh, Roland Schwarz, Darko Kolakovic, Andy Buonviri, Ming Kin Lai, Kent Johnson, Helmut Bauer, Oliver Schneider, Ron Pimblett, Jose Luis Rodriguez Garcia, Jeroen Ruigrok van der Werven, Uffe Jakobsen, Bryan Ashby, Bruno Haible, Artur Bac, Terry Schwarz, Leo Davis, Markus Duft, William Dang, Paul Green, Ruben Van Boxem, Pau Garcia i Quiles, Mikulas Patocka, Leo Davis, Mark Ferry, Holger Machens, Simon Watts, Paul Hargrove, Hans-Christoph Steiner, Gerald Combs, Denys Bulant, Massimo Morara, Jeremy Bennett, Guillem Jover, Riku Voipio, Jacques Pelletier, Mark Jarvin, Georg Sauthoff, Scot Jenkins, Grzegorz Brzęczyszczykiewicz, John Dallman, Gianmichele Toglia, Robbie Groenewoudt, Andreas Mohr, алкс юююций, Sverre Hvismen Johansen, Stefan Tauner, Daniel Garcia, Ozkan Sezer, Dean Saridakis, Frank Long, Kevin Adler.