Tôi thỉnh thoảng sử dụng số học 64 bit trong thư viện C++ nguồn mở của tôi. Tôi phát hiện ra rằng long long
phục vụ mục đích của tôi khá độc đáo. Ngay cả một số hộp solaris 10 năm tuổi cũng có thể biên dịch nó. Và nó hoạt động mà không rối tung xung quanh với #defines trên Windows.Cách thực hiện số học 64 bit di động, không có cảnh báo trình biên dịch
Bây giờ vấn đề là tôi nhận được khiếu nại từ người dùng vì họ biên dịch với cài đặt GCC -pantic, và GCC nhấn mạnh việc đưa ra cảnh báo rằng long long
không thuộc tiêu chuẩn C++. Điều này có lẽ đúng, nhưng tôi không quá quan tâm đến tiêu chuẩn C++, tôi chỉ muốn mã của tôi làm việc trên nhiều trình biên dịch càng hợp lý càng tốt.
Vì vậy, câu hỏi của tôi có hai phần:
- ai cũng có thể đặt tên cho trình biên dịch thực tế C++ không hỗ trợ 64 bit dài của lâu?
- có cách nào để làm cho GCC biên dịch số học 64 bit (trên nền tảng 32 bit) mà không có cảnh báo trình biên dịch không? (stdint.h không hữu ích, vì nó cũng phụ thuộc vào
long long
)
P.S.
Nếu có nền tảng có thời lượng dài dài 128 bit trở lên, điều đó thật thú vị nhưng không phải là vấn đề đối với tôi.
Sử dụng -pantic là một cách hay để có được * không * công việc được thực hiện và loại trừ việc sử dụng hầu hết các thư viện của bên thứ ba không có lý do chính đáng. Đó là những gì nó nói trên tin - một lời phàn nàn vô nghĩa, nhưng tôi không giả sử nói với người dùng của bạn ngừng việc ngớ ngẩn như vậy sẽ khiến bạn thích họ? – Clifford
@Clifford: '-pedantic' là có để giúp bạn viết mã sẽ dễ dàng chuyển đến các trình biên dịch khác trong tương lai. Nếu bạn không lo lắng về điều đó, bạn không phải sử dụng nó, nhưng bạn sẽ kết thúc là người viết tất cả các thư viện của bên thứ ba đó (a) tạo ra những cảnh báo kỳ lạ, và (b) khá có thể không ' t làm việc trên một số trình biên dịch. Cấp, 'long long' không phải là vấn đề thực sự nhất, nhưng tôi từng làm việc trên một sản phẩm di động và nhiều lần chúng tôi sửa lỗi từ các chàng trai Windows thực sự không hoạt động trên một số nền tảng của chúng tôi (và gcc -pedantic đã nói với họ như vậy). –
... lạ lùng, khi các lập trình viên Linux đang làm việc trên thành phần di động của sản phẩm, mã của họ ít có khả năng thất bại trong các thử nghiệm trên các nền tảng khác. –