Мне интересно, что решает, разрешено ли вам использовать <Header.h>
или "Header.h"
когда вы импортируете файлы в Objective-C. До сих пор я наблюдал, что вы используете кавычки ""
для файлов в вашем проекте, к которым у вас есть источник реализации, и угловые скобки, <>
когда вы ссылаетесь на библиотеку или фреймворк.
Но как именно это работает? Что мне нужно сделать, чтобы мои собственные классы использовали скобки? Прямо сейчас Xcode не позволяет мне делать это для моих собственных заголовков.
Кроме того, просматривая заголовки некоторых фреймворков, я вижу, что заголовки ссылаются друг на друга с помощью <frameworkname/file.h>
. Как это работает? Он очень похож на пакеты в Java, но, насколько я знаю, в Objective-C нет такого понятия, как пакет.
источник
В C принято соглашение, что файлы заголовков в
<>
скобках ищутся в «системных» каталогах, а также""
в пользовательских или локальных каталогах.Думаю, определение системного и локального немного расплывчато. Я считаю, что он просматривает системные каталоги во включенном пути или в CPPFLAGS для <header.h>, а локальный каталог или каталог, указанный с помощью -I to compiler, ищет файлы "header.h".
Я предполагаю, что это работает аналогично для Objective-C.
источник
Чтобы импортировать ваши собственные классы с помощью «<>», вы должны поместить файлы заголовков (* .h) в папку lib компилятора или установить ПЕРЕМЕННЫЕ СИСТЕМЫ в папку lib.
источник
Или установите
Always Search User Path
значение,YES
чтобы можно было использовать угловые скобки.источник
С помощью угловых скобок
<Foundation/Foundation.h>
вы, например , импортируете системные файлы.Вы используете двойные кавычки
"Person.h"
для импорта локальных файлов (файлов, которые вы создали) и чтобы указать компилятору, где их искать.источник
<Name.h>
-Angle brackets
сообщает препроцессору, что нужно искать в специально отведенных для этого каталогах системы. Например, вы импортируете системные заголовки, такие как<UIKit/UIKit.h>
или добавленные фреймворки."Name.h"
-Quotation marks
указывает препроцессору искать в текущем каталоге. Если заголовок не найден, препроцессор пытается использовать<Name.h>
. Обычно вы должны использовать его с файлами вашего проектаисточник
Просто наткнулся на ту же проблему, есть 2 типа путей поиска - это Xcode:
Если вы добавляете свои собственные включаемые папки в пути поиска заголовков, вы можете без проблем использовать угловые скобки.
источник
ЧТО ТАКОЕ ФАЙЛ ЗАГОЛОВКИ? Заголовочные файлы содержат определения функций и переменных, которые могут быть включены в любую программу на C с помощью инструкции препроцессора #include. Стандартные файлы заголовков поставляются с каждым компилятором и охватывают ряд областей, включая обработку строк, математику, преобразование данных, печать и чтение переменных. Ex- #include он содержит информацию о вводе, например, scanf (), и выводе, например, функции printf () и т.д. в компиляторе.
ВКЛЮЧАЮТ
1) #INCLUDE: - Это препроцессор, который обрабатывает перед выполнением основной функции. Основная работа препроцессора - инициализировать среду программы, т.е. программу с файлом заголовка. 2) .h: - (Заголовочный файл) Заголовочный файл - это файл с расширением .h, который содержит объявления функций C и определения макросов и должен использоваться несколькими исходными файлами. В) Есть два типа файлов заголовков: файлы, которые пишет программист, и файлы, которые поставляются с вашим компилятором? A) В угловых скобках Форма угловых скобок предназначена для «глобальных» включений - тех, которые находятся где-то на пути включения, переданном компилятору (например, #include). Он используется для использования библиотечной функции, которая уже полностью определена в компиляторе. В C соглашение заключается в том, что файлы заголовков в скобках <> ищутся в 'system'. каталоги B) Кавычки: - форма в кавычках «header.h» предназначена для «локальных» включений файлов (вам необходимо указать относительный путь от текущего файла, например #include «headers / my_header.h»). В C соглашение заключается в том, что файлы заголовков в "" ищутся в пользовательских или локальных каталогах. В нем один файл включаться в другой. (ФАЙЛ ВКЛЮЧЕНИЕ). Его можно использовать в двух случаях: Случай 1. Если у нас очень большая программа, код лучше всего разделить на несколько разных файлов, каждый из которых содержит набор связанных функций. Случай 2: Есть некоторые функции и микроопределения, которые нам нужны максимум во всех программах, которые мы пишем. бывший ) В C принято соглашение, что файлы заголовков в "" ищутся в пользовательских или локальных каталогах. В нем один файл включаться в другой. (ФАЙЛ ВКЛЮЧЕНИЕ). Его можно использовать в двух случаях: Случай 1. Если у нас очень большая программа, код лучше всего разделить на несколько разных файлов, каждый из которых содержит набор связанных функций. Случай 2: Есть некоторые функции и микроопределения, которые нам нужны максимум во всех программах, которые мы пишем. бывший ) В C принято соглашение, что файлы заголовков в "" ищутся в пользовательских или локальных каталогах. В нем один файл включаться в другой. (ФАЙЛ ВКЛЮЧЕНИЕ). Его можно использовать в двух случаях: Случай 1. Если у нас очень большая программа, код лучше всего разделить на несколько разных файлов, каждый из которых содержит набор связанных функций. Случай 2: Есть некоторые функции и микроопределения, которые нам нужны максимум во всех программах, которые мы пишем. бывший
источник