Как определить символ препроцессора в XCode

Предупреждение: [fункция] : не удалось открыть поток: [причина]

Это происходит, когда вы обычно вызываете файл include , require или fopen, и PHP не смог найти файл или не имел достаточного разрешения на загрузку файла.

Это может произойти по разным причинам:

  • неправильный путь к файлу
  • путь к файлу относительный
  • include path is wrong
  • разрешения слишком ограничительные
  • SELinux в силе
  • и многие другие ...

Одна из распространенных ошибок заключается в том, чтобы не использовать абсолютный путь. Это можно легко решить, используя полный путь или магические константы , такие как __DIR__ или dirname(__FILE__):

include __DIR__ . '/inc/globals.inc.php';

или:

require dirname(__FILE__) . '/inc/globals.inc.php';

Обеспечение правильного пути используется одним шагом в устранении этих проблем, это также может быть связано с несуществующими файлами, правами файловой системы, предотвращающими доступ или открытыми ограничениями на основе самого PHP.

Лучший способ для быстрого решения этой проблемы необходимо выполнить контрольный список устранения неполадок ниже.

Вопросы, относящиеся:

Связанные ошибки:

98
задан Brian Tompsett - 汤莱恩 12 July 2016 в 16:52
поделиться

4 ответа

Перейдите к своим настройкам Target или Project, нажмите значок Gear на левую нижнюю часть и выбор, "Добавьте Пользовательская Установка". Новое имя установки должно быть GCC_PREPROCESSOR_DEFINITIONS, и можно ввести определения в правом поле.

На комментарии Steph, полный синтаксис:

constant_1=VALUE constant_2=VALUE

Примечание, которое Вы не делаете потребность '=, если Вы просто хотите к #define символ, вместо того, чтобы дать ему значение (для #ifdef операторы)

114
ответ дан jww 24 November 2019 в 05:10
поделиться

Вы не должны создавать пользовательскую установку. Встроенная установка "Preprocessor Macros" работает просто великолепно. сопроводительный текст http://idisk.mac.com/cdespinosa/Public/Picture%204.png

, Если у Вас есть несколько целей или проектов, которые используют тот же файл префикса, используйте Макросы Препроцессора, Не Используемые В Предварительно скомпилированных Заголовках вместо этого, таким образом, различия в Вашем макроопределении не инициировали ненужный дополнительный набор предварительно скомпилированных заголовков.

86
ответ дан cdespinosa 24 November 2019 в 05:10
поделиться

Он находится в разделе «Предварительная обработка GCC 4.2» (или просто введите «препро» в поле поиска) ...

... однако, хоть убей, я не могу получить чтобы он работал.

У меня есть стандартные конфигурации отладки и выпуска, и я хочу определить DEBUG = 1 в конфигурации отладки. Но после добавления его в качестве значения:

(в окне настроек)> Макросы препроцессора: DEBUG = 1

#if DEBUG
    printf("DEBUG is set!");
#endif 

... никогда не печатает / не вызывается. Это сводит меня с ума ...

3
ответ дан 24 November 2019 в 05:10
поделиться

В ответ на комментарий Кевина Лэйти (см. cdespinosa), о разделе предварительной обработки GCC, который не отображается в настройках вашей сборки, сделайте активным SDK тот, который говорит (Базовый SDK) после него, и этот раздел появится. Вы можете сделать это, выбрав меню «Проект»> «Установить активную цель»> «XXX (базовый SDK)». В разных версиях XCode (базовый SDK) могут быть разные, например (настройка проекта или значение проекта по умолчанию).

После появления этого раздела вы можете добавить свои определения в макрос процессора, а не создавать пользовательские настройки.

1
ответ дан 24 November 2019 в 05:10
поделиться