Sto provando a compilare un programma c sotto mingw gcc. Questo programma utilizza un numero intero __uint128_t
. Quando provo a compilarlo sotto la normale ubuntu gcc sulla stessa macchina a 64 bit, funziona perfettamente. Ma poi, quando provo a compilarlo per Windows sotto mingw, semplicemente non riconosce nemmeno la parola chiave __uint128_t
. Cosa significa questo? Non ci sono 128 bit interi sotto mingw? In caso contrario, esiste un linguaggio di programmazione per Windows che ha numeri interi nativi (e FAST) di 128 bit?__uint128_t on mingw gcc
risposta
È necessario
- una versione relativamente recente di gcc
- una versione compilata con il supporto nativo a 64 bit integer
__int128_t
viene poi emulato utilizzando coppie di int64_t
nello stesso modo in cui Gli interi a 64 bit vengono emulati con 32 bit se non sono disponibili su compila 32 bit
Sono stato in grado di ottenere lo stesso problema con Code :: Blocks e l'installazione mingw predefinita (che è IA32 btw), tuttavia, quando ho installato TDM-MinGW64, ha compilato bene (dopo aver aggiunto il compilatore x64 a C :: B). Quindi assicurati che la tua build mingw abbia come target x64 (con -m64
) e è una versione x64 di mingw, poiché __uint128_t
è un'estensione ABI x64 opzionale.
qualsiasi IDE di Windows che si sta utilizzando non raccoglierà __int128_t
come una parola chiave, poiché è un'estensione GCC speciale (come menzionato).
Ma poi, quando provo a compilarlo per Windows sotto mingw, semplicemente non riconosce nemmeno la parola chiave __uint128_t. Cosa significa questo? Non ci sono 128 bit interi sotto mingw?
Eseguire gcc -dM -E - < /dev/null | grep INT128
. Se emette la macro #define __SIZEOF_INT128__ 16
, allora è disponibile __uint128_t
. Se non emette la macro o è inferiore a 16, quindi __uint128_t
non è disponibile.
Vedere anche 128-bit integer - nonsensical documentation? sulla mailing list degli utenti GCC.
- 1. Cygwin: Come utilizzare effettivamente gcc-mingw
- 2. Compila intel assembly con gcc/mingw
- 3. Incorporamento di blob binari utilizzando gcc mingw
- 4. gcc MinGW-w64 e Address Sanitizer
- 5. È possibile utilizzare GCC senza Cygwin o MinGW?
- 6. MinGW: "gcc non è riconosciuto come comando interno o esterno"
- 7. MinGW GCC 4.9.1 e determinismo in virgola mobile
- 8. Specializzazione del modello - comportamento diverso tra MSVC e GCC/MinGW
- 9. MinGW - Aggiornamento GCC versione 3.4.5 alla versione 4.4
- 10. MinGW come compilatore GCC a 64 bit affidabile
- 11. GCC MinGW: "Tipo di conversione sconosciuto carattere 'h'" (snprintf)
- 12. Come sapere se __uint128_t è definito
- 13. strerror con MinGW-W64
- 14. Perché esiste il Mingw?
- 15. MinGW non produce avvisi
- 16. MinGW/CxxTest errori bizzarri
- 17. C: libreria Regex con MinGW
- 18. MinGW e std :: thread
- 19. mingw-4.8.1 questione atomica
- 20. Perché MinGW è molto lento?
- 21. Come usare MinGW-w64 con Cygwin?
- 22. std :: stoi non esiste in g ++ 4.6.1 su MinGW
- 23. Come dichiarare e link per RoInitialize, RoUninitialize, RoGetActivationFactory e hstring funzioni in Mingw Gcc
- 24. Ancora un altro MinGW "gcc: errore: CreateProcess: nessun file o directory"
- 25. Estrarre le informazioni di debug da una DLL incorporata di msys/mingw gcc utilizzando rebase.exe?
- 26. Differenze tra Mingw-w64 e TDM-GCC per un semplice progetto GDI
- 27. Compilare programmi openCV 2.3.1 con MinGW gcc/g ++ su Windows 7 64bit
- 28. Come utilizzare il compilatore gcc di MinGW quando si installa il pacchetto Python usando Pip?
- 29. MinGW GCC dispiace, non implementato: modalità a 64 bit non è compilato # include <jni.h>
- 30. MinGW/Eclipse ld.exe non trova librerie
Eseguire 'gcc -dM -E - dev/null | grep INT128'. Se emette '#define __SIZEOF_INT128__ 16', quindi' __uint128_t' è disponibile. Se non emette la macro o meno di 16, allora '__uint128_t' non è disponibile. – jww