Когда включая заголовочные файлы, действительно ли путь чувствителен к регистру?

Учитывая это дерево каталогов:

src/MyLibrary/MyHeader.h
src/file.cpp

file.cpp:

#include "mylibrary/myheader.h"
...

Компиляция file.cpp работает с VS, сбоями в gcc.

  • Что говорит стандарт?
  • Если путь чувствителен к регистру, почему это мудро?
  • Какова лучшая практика, сохраните весь нижний регистр файла/имен папок и таким образом сделайте то же когда включая?

Спасибо.

12
задан Idan K 23 December 2009 в 10:25
поделиться

3 ответа

Чувствительность к регистру зависит от операционной системы. Windows не чувствительна к регистру. Linux есть.

РЕДАКТИРОВАТЬ:

На самом деле, как заметил комментарий Мартина Йорка , чувствительность к регистру зависит от файловой системы. По умолчанию Windows использует файловую систему без учета регистра, а в Linux - с учетом регистра. Для тех, кто интересуется, какие файловые системы чувствительны к регистру, а какие нет, в Википедии есть полный список: Сравнение ограничений для имен файлов .

24
ответ дан 2 December 2019 в 05:15
поделиться

Еще один момент, о котором следует помнить, - это символ разделителя путей . Несмотря на то, что Visual Studio (и другие IDE Windows, я уверен) будет принимать либо '/', или '\', вы всегда должны использовать '/' в пути включения для переносимости.

1
ответ дан 2 December 2019 в 05:15
поделиться

Это не стандарт C ++, это способ Linux, где все имена путей чувствительны к регистру. Лучше всего выбрать любое имя файла (в основном в нижнем регистре) и использовать тот же регистр в директиве include. Также всегда используйте относительные пути к файлам.

0
ответ дан 2 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: