Determinando 32 vs 64 bits em C ++

Eu estou procurando uma maneira de determinar com segurança se o código C ++ está sendo compilado em 32 vs 64 bits. Desenvolvemos o que achamos ser uma solução razoável usando macros, mas estávamos curiosos para saber se as pessoas poderiam pensar em casos em que isso poderia falhar ou se houvesse uma maneira melhor de fazer isso. Por favor, note que estamos tentando fazer isso em um ambiente multiplataforma multi-plataforma.

#if ((ULONG_MAX) == (UINT_MAX))
# define IS32BIT
#else
# define IS64BIT
#endif

#ifdef IS64BIT
DoMy64BitOperation()
#else
DoMy32BitOperation()
#endif

Obrigado.

questionAnswers(14)

yourAnswerToTheQuestion