De vez en cuando uso la aritmética de 64 bits en una biblioteca C++ de código abierto. Descubrí que long long
sirve mi propósito bastante bien. Incluso una caja de solaris de 10 años podría compilarla. Y funciona sin jugar con #defines en Windows también.Cómo hacer una aritmética portátil de 64 bits, sin advertencias del compilador
Ahora el problema es que recibo quejas de mis usuarios porque compilan con configuraciones antiguas de GCC, y GCC insiste en emitir advertencias de que long long
no es parte del estándar de C++. Probablemente esto sea correcto, pero no estoy demasiado interesado en el estándar de C++ per se, solo quiero que mi código funcione en tantos compiladores como sea razonablemente posible.
Así que mi pregunta es doble:
- Puede alguien nombrar compiladores de C++ reales que no soportan 64 bits de largo de largo?
- ¿Hay alguna manera de hacer que GCC compile aritmética de 64 bits (en la plataforma de 32 bits) sin advertencias del compilador? (stdint.h no ayuda, ya que también depende de
long long
)
P.S.
Si hay plataformas donde long longs se convierten en 128 bit o más grandes, eso es interesante, pero no es un problema para mí.
El uso de -pedantic es una buena manera de obtener * no * el trabajo realizado y excluye el uso de la mayoría de las bibliotecas de terceros sin una buena razón. Es lo que dice en la lata: una queja sin sentido, pero no creo que decirles a tus usuarios que dejen de ser tan tontos te atraiga a ellos tampoco. – Clifford
@Clifford: '-pedantic' está ahí para ayudarte a escribir código que será fácil de portar a otros compiladores en el futuro. Si no está preocupado por eso, no tiene que usarlo, pero terminará siendo la persona que está escribiendo todas esas bibliotecas de terceros que (a) producen advertencias extrañas, y (b) posiblemente no lo haga. Trabajar en algunos compiladores. De acuerdo, 'long long' no es el problema real más probable, pero solía trabajar en un producto portátil y varias veces arreglábamos cosas de los chicos de Windows que en realidad no funcionaban en algunas de nuestras plataformas (y gcc -pedantic se los habría dicho así). –
... curiosamente, cuando los programadores de Linux estaban trabajando en el componente portátil del producto, era menos probable que fallaran las pruebas en otras plataformas. –