2013-01-06 36 views

Trả lời

8

Các glibc Feature test macros bang tài liệu:

_LARGEFILE_SOURCE
Nếu macro này được xác định một số chức năng bổ sung có sẵn trong đó khắc phục một vài thiếu sót trong tất cả các tiêu chuẩn trước đó. Cụ thể, các chức năng fseeko và ftello có sẵn. Không có các hàm này, sự khác nhau giữa giao diện ISO C (fseek, ftell) và giao diện POSIX ở mức thấp (lseek) sẽ dẫn đến các vấn đề.

Macro này được giới thiệu như là một phần của phần mở rộng Hỗ trợ tệp lớn (LFS).

Vì vậy, macro đó đặc biệt làm cho fseekoftello khả dụng. Chỉ có các cài đặt _FILE_OFFSET_BITS không làm cho các chức năng này khả dụng.

(Lưu ý rằng nếu bạn đang sử dụng một phương ngữ GNU C, mặc định với GCC, bạn có thể không cần phải xác định một cách rõ ràng _LARGEFILE_SOURCE. Bạn làm gì nếu bạn sử dụng -std=c99 ví dụ.)

2

Câu trả lời khác là sai, vì tài liệu cho _LARGEFILE_SOURCE gây hiểu lầm. _FILE_OFFSET_BITS=64 đủ để hiển thị các chức năng fseekoftello và do đó là macro _POSIX_C_SOURCE được xác định là> = 200112L.

Từ các tài liệu glibc trên _FILE_OFFSET_BITS

Nếu macro được định nghĩa với giá trị 64, giao diện tập tin lớn thay thế giao diện cũ. Tức là, các chức năng không được cung cấp dưới các tên gọi khác nhau (vì chúng có tên là _LARGEFILE64_SOURCE). Thay vào đó, tên hàm cũ giờ đây tham chiếu đến các hàm mới, ví dụ: cuộc gọi tới fseeko hiện thực sự gọi là fseeko64.

Luôn xác định _FILE_OFFSET_BITS=64 để chuyển sang loại 64 bit trên hệ thống dựa trên glibc 32 bit. glibc thực sự nên biến nó thành mặc định ...

Các vấn đề liên quan