# імпорт, використовуючи кутові дужки <> та лапки ""


120

Мені цікаво, що вирішує, чи дозволяти ви використовувати <Header.h>чи "Header.h"імпортувати файли в Objective-C. Поки моє зауваження було, що ви використовуєте лапки ""для файлів у своєму проекті, до яких ви отримали джерело реалізації, та кутові дужки, <>коли ви посилаєтесь на бібліотеку чи рамки.

Але як саме це працює? Що я повинен зробити, щоб власні заняття використовувати дужки? Зараз Xcode не дозволить мені зробити це для власних заголовків.

Також, переглядаючи заголовки деяких фреймворків, я бачу, що заголовки посилаються один на одного <frameworkname/file.h>. Як це працює? Це дуже схоже на пакети на Java, але, наскільки я знаю, такого пакету, як пакет у Objective-C, немає.

Відповіді:


122

Objective-C має це спільне з C / C ++; цитована форма призначена для "локальних" файлів (потрібно вказати відносний шлях до поточного файлу, наприклад #include "headers/my_header.h"), тоді як кутова дужка форма для "глобального" включає - ті, які знайдені десь на шляху включення, переданого в компілятор (наприклад #include <math.h>).

Отже, щоб не використовувати власні заголовки, вам < >не " "потрібно передавати ні відносний, ні абсолютний шлях для каталогу заголовка до компілятора. Див. "Як додати глобальний шлях включення для Xcode" для інформації про те, як це зробити в Xcode.

Дивіться цю сторінку MSDN для отримання додаткової інформації.


1
Щойно у мене виникла проблема з проектом GitHub, який посилає AFNetworking як #import <AFNetworking / AFHTTPRequestOperationManager.h>, тому мені довелося $ (SRCROOT) / lib / AFNetworking як шлях пошуку заголовків. Під цією папкою розміщена ще одна папка під назвою AFNetworking, яка описує імпорт із кутовими дужками саме цим шляхом. Зазвичай #import "AFHTTPRequestOperationManager.h" працює, але для цього проекту він просто посилається на нього по-іншому.
Бренан

Здається, причина така ж, як і для C / C ++. Кутова дужка (позначена символом <>) вказує на те, що шукати файл, який не є поточним локальним каталогом, тоді як лапки (позначені символом "") вказують на пошук файлу в поточному локальному каталозі.
Джайпракаш Дюбі

Посилання в кінці відповіді застаріло.
Панг

14

У З умовою є те, що файли заголовків у <>дужці шукаються в "системних" каталогах та ""в користувальницьких або локальних каталогах.

Визначення системного та локального, я думаю, трохи розпливчасте. Я вважаю, що це виглядає в системних каталогах в включаючи шлях або в CPPFLAGS для <header.h>, а в локальному каталозі або каталозі, вказаному компілятором -I, шукаються файли "header.h".

Я припускаю, що це працює аналогічно для Objective-C.


6

Щоб імпортувати власні класи за допомогою <<>, ви повинні помістити файли заголовків (* .h) у папку lib компілятора або встановити SYSTEM VARIABLES, що показує на вашу папку lib.


2

Або встановити Always Search User Pathна YESтак що ви можете використовувати кутові дужки.


1

З кутовими дужками, наприклад, <Foundation/Foundation.h>ви імпортуєте системні файли.

Ви використовуєте подвійні лапки, "Person.h"щоб імпортувати локальні файли (файли, які ви створили) та сказати компілятору, де їх шукати.


1

<Name.h>- Angle bracketsповідомляє препроцесору здійснювати пошук у спеціальних заздалегідь визначених каталогах системи. Наприклад, ви імпортуєте заголовки систем, як-от <UIKit/UIKit.h>або додані рамки

"Name.h"- Quotation marksповідомляє препроцесору шукати в поточному каталозі. Якщо заголовок не знайдений, спробуйте використовувати препроцесор <Name.h>. Зазвичай ви повинні використовувати його з файлами вашого проекту


0

Щойно натрапивши на ту ж проблему, є 2 типи шляхів пошуку - це Xcode:

User Header Search Paths
Header Search Paths

Якщо ви додасте власні папки включення в Шляхи пошуку заголовків, без проблем можна використовувати кутові дужки.


-4

ЩО ТАКИЙ ФАЙЛ ГОЛОВА Файли заголовків містять визначення функцій та змінних, які можуть бути включені до будь-якої програми C за допомогою оператора #include попереднього процесора. Стандартні файли заголовків надаються з кожним компілятором і охоплюють діапазон областей, обробку рядків, математичне перетворення даних, друк та читання змінних. Наприклад, він містить інформацію про вхід, як scanf (), і виводить, як функцію printf (), і т.д. в компілятор.

ВКЛЮЧАТИ

1) #INCLUDE: - Це попередній процесор, який обробляє перед процесом основної функції. Основна робота попереднього процесора - ініціалізація середовища програми, тобто програма з файлом заголовка. 2) .h: - (файл заголовка) Файл заголовка - це файл із розширенням .h, який містить декларації функції C та визначення макросу та має бути спільним між кількома вихідними файлами. Q) Є два типи файлів заголовків: файли, які записує програміст, і файли, що постачаються разом із вашим компілятором? A) У кутових дужках Форма кутових дужок для "глобальної" включає - ті, що знаходяться десь на шляху включення, переданого компілятору (наприклад, #include) Він використовується для використання функції бібліотеки, яку все готово визначити в компіляторі. У C умовою є те, що файли заголовків у дужці <> шукаються в "системі" каталоги В) Відмітки котирування: - форма "header.h" призначена для "локальних" файлів (потрібно вказати відносний шлях до поточного файлу, наприклад, #include "headers / my_header.h"). полягає в тому, що файли заголовків у "" шукаються в користувальницьких або локальних каталогах. У ньому один файл, який потрібно включити до іншого. (FILE INCLUSION). Його можна використовувати у двох випадках: Випадок 1: Якщо у нас дуже велика програма, код найкраще розділити на кілька різних файлів, кожен з яких містить набір пов'язаних функцій. Випадок 2: Є деякі функції та визначення мікросхем, які нам потрібні максимум у всіх програмах, які ми пишемо. Вих ) У C умовою є те, що файли заголовків у "" шукаються в користувальницьких або локальних каталогах. У ньому один файл, який потрібно включити до іншого. (FILE INCLUSION). Його можна використовувати у двох випадках: Випадок 1: Якщо у нас дуже велика програма, код найкраще розділити на кілька різних файлів, кожен з яких містить набір пов'язаних функцій. Випадок 2: Є деякі функції та визначення мікросхем, які нам потрібні максимум у всіх програмах, які ми пишемо. Вих ) У C умовою є те, що файли заголовків у "" шукаються в користувальницьких або локальних каталогах. У ньому один файл, який потрібно включити до іншого. (FILE INCLUSION). Його можна використовувати у двох випадках: Випадок 1: Якщо у нас дуже велика програма, код найкраще розділити на кілька різних файлів, кожен з яких містить набір пов'язаних функцій. Випадок 2: Є деякі функції та визначення мікросхем, які нам потрібні максимум у всіх програмах, які ми пишемо. Вих

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.