Tôi đang cố gắng biên dịch chương trình c theo mingw gcc. Chương trình này đang sử dụng số nguyên __uint128_t
. Khi tôi cố gắng biên dịch nó dưới gcc chuẩn ubuntu trên cùng một máy 64 bit, nó hoàn toàn hoạt động. Nhưng sau đó, khi tôi cố gắng biên dịch nó cho các cửa sổ dưới mingw, nó chỉ đơn giản là thậm chí không nhận ra từ khóa __uint128_t
. Điều đó có nghĩa là gì? Không có 128 bit số nguyên dưới mingw? Nếu không, có bất kỳ ngôn ngữ lập trình nào cho các cửa sổ có số nguyên 128 bit gốc (và nhanh) không?__uint128_t trên mingw gcc
Trả lời
Bạn cần
- một phiên bản tương đối gần đây của gcc
- một phiên bản được biên soạn với sự hỗ trợ bản địa 64 bit số nguyên
__int128_t
sau đó được mô phỏng bằng cách sử dụng cặp int64_t
trong cùng một cách như Số nguyên 64 bit được mô phỏng với 32 bit nếu chúng không có sẵn trên biên dịch 32 bit
Tôi đã có thể nhận được cùng một vấn đề bằng cách sử dụng Code :: Blocks và mặc định mingw cài đặt (đó là IA32 btw), tuy nhiên, khi tôi cài đặt TDM-MinGW64, nó biên dịch tốt (sau khi thêm trình biên dịch x64 để C :: B). Vì vậy, hãy đảm bảo rằng bản dựng mingw của bạn nhắm mục tiêu x64 (với -m64
) và nó là một bản dựng x64 của mingw, dưới dạng __uint128_t
là một phần mở rộng tùy chọn ABI x64.
bất kỳ cửa sổ IDE nào bạn đang sử dụng sẽ không nhận __int128_t
làm từ khóa, vì đây là phần mở rộng GCC đặc biệt (như đã đề cập).
Nhưng sau đó, khi tôi cố gắng biên dịch nó cho cửa sổ dưới mingw, nó chỉ đơn giản là không nhận ra từ khóa __uint128_t. Điều đó có nghĩa là gì? Không có 128 bit số nguyên dưới mingw?
Thực hiện gcc -dM -E - < /dev/null | grep INT128
. Nếu nó xuất ra macro #define __SIZEOF_INT128__ 16
, thì __uint128_t
có sẵn. Nếu nó không xuất ra macro hoặc nhỏ hơn 16, thì __uint128_t
không khả dụng.
Cũng xem 128-bit integer - nonsensical documentation? trên danh sách gửi thư của người dùng GCC.
- 1. Xây dựng Python với Mingw và gcc
- 2. Tạo thư viện dùng gcc trên Linux và MinGW trên Windows
- 3. Biên dịch lắp ráp intel với gcc/mingw
- 4. Sự cố với std :: stoi, không hoạt động trên MinGW GCC 4.7.2
- 5. localtime_r hỗ trợ trên MinGW
- 6. chơi với GCC 4.6 trên cửa sổ
- 7. Biên dịch chéo MinGW trên linux
- 8. Biên dịch OpenCL trên Mingw Nvidia SDK
- 9. Có thể sử dụng GCC không có Cygwin hoặc MinGW không?
- 10. Tuyên bố ngầm định về chức năng 'getaddrinfo' trên MinGW
- 11. MinGW - Cập nhật phiên bản GCC 3.4.5 lên phiên bản 4.4
- 12. Làm thế nào để biết nếu __uint128_t được định nghĩa
- 13. Làm thế nào để liên kết với msvcr90.dll với mingw gcc?
- 14. Làm cách nào để thêm biểu tượng vào tệp thực thi được biên dịch mingw-gcc?
- 15. Sự khác nhau giữa các trình biên dịch Borland, GCC và MinGW là gì?
- 16. MinGW là trình biên dịch GCC 64 bit đáng tin cậy
- 17. Dữ liệu nhập chứa với MinGW-w64
- 18. Không thể tải xuống MinGW từ Sourceforge
- 19. C: Thư viện Regex với MinGW
- 20. mingw 3.4.5 thiếu dlfcn.h?
- 21. chủ đề mingw-w64: posix vs win32
- 22. OpenGL + Mesa 3D + MinGW
- 23. MinGW Link Single EXE
- 24. Tại sao MinGW lại rất chậm?
- 25. Liên kết tĩnh với libarchive trên Windows với MinGW
- 26. Thêm gdb vào MinGW
- 27. Có fmemopen() trong MinGW
- 28. Lệnh dài dòng SCP TEMPFILE với MinGW
- 29. Mingw nhiều định nghĩa của _Unwind_resume
- 30. Trích xuất thông tin gỡ lỗi từ tệp msys/mingw gcc được tạo bằng cách sử dụng rebase.exe?
Thực hiện 'gcc -dM -E - dev/null | grep INT128'. Nếu nó xuất ra '#define __SIZEOF_INT128__ 16', thì' __uint128_t' có sẵn. Nếu nó không xuất ra macro hoặc nhỏ hơn 16, thì '__uint128_t' không có sẵn. – jww