Tiêu chuẩn nói gì?
Chỉ thị trường hợp trong việc thực hiện (trình biên dịch/tiền xử lý). Này được giải thích dưới 16.2.2 [cpp.include]:
Một chỉ thị tiền xử lý của mẫu
# include < h-char-sequence> new-line
tìm kiếm một chuỗi các nơi thực hiện xác định cho một tiêu đề xác định duy nhất bởi trình tự quy định giữa các <
và >
dấu phân cách và gây ra việc thay thế chỉ thị đó bằng toàn bộ nội dung của tiêu đề. Cách xác định các địa điểm hoặc tiêu đề được xác định là được triển khai.
Tương tự, 16.2.3 [cpp.include]:
Một chỉ thị tiền xử lý của mẫu
# include " q-char-sequence" new-line
gây ra thay thế chỉ thị rằng toàn bộ nội dung của tập tin nguồn được xác định theo trình tự được chỉ định giữa các dấu phân cách "
.Tệp nguồn được đặt tên được tìm kiếm theo cách được triển khai. Nếu tìm kiếm này không được hỗ trợ hoặc nếu tìm kiếm không thành công, chỉ thị sẽ được xử lý lại như thể đọc
# include < h-char-sequence> new-line
với trình tự giống hệt nhau (bao gồm >
ký tự, nếu có) từ chỉ thị gốc.
Lựa chọn tự nhiên cho việc triển khai ngôn ngữ là sử dụng độ nhạy của hệ thống tệp hoặc OS, nhưng không có yêu cầu nghiêm ngặt (như tất cả các câu trả lời khác được đề xuất).
Cách tốt nhất là giữ cho tất cả tên tệp/thư mục thường và do đó làm giống nhau khi bao gồm?
Thực tiễn tốt nhất, như mọi khi: Giữ mọi thứ nhất quán. Nếu bạn đang sử dụng các tệp nguồn/tiêu đề hỗn hợp trong dự án của mình, hãy tiếp tục sử dụng chúng và sao chép vỏ chính xác trong chỉ thị #include
của bạn.
Thực ra nó liên quan nhiều hơn đến hệ thống tập tin được sử dụng thay vì hệ điều hành. Mặc định được định nghĩa như trên. Nhưng trên Linux có một hệ thống tập tin lớn hơn để lựa chọn từ một số trong đó không phải là trường hợp nhạy cảm. –
@Martin: Vâng, bạn đã đúng. Cảm ơn bạn đã quan sát chính xác. –
Vì vậy, độ nhạy trường hợp không được chỉ định bởi C89/99/++ 11? hoặc tiêu chuẩn nói rằng đường dẫn tìm kiếm và tên tệp có phân biệt chữ hoa chữ thường không? –