Почему `#import <HIToolbox / Events.h>` дает сбой? - PullRequest
1 голос
/ 07 июля 2019

Мне требуется kVK_Space, который находится в HIToolbox/Events.h:

enter image description here

#import <Carbon/Carbon.h>

работает, и этот файл содержит:

#include <HIToolbox/HIToolbox.h>

Но если я попробую этот второй #include напрямую, он потерпит неудачу.

enter image description here

Может кто-нибудь объяснить, почему?

1 Ответ

1 голос
/ 08 июля 2019

Carbon - это «каркас зонта» .Он инкапсулирует другие фреймворки, такие как HIToolbox.Чтобы скрыть детали реализации, вы не можете напрямую включать заголовки подкадров.

Из приведенной выше ссылки:

[T] два фактора отличают каркасы зонта отдругие рамки.Первый - это способ, которым они включают файлы заголовков.

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

По этой последней ссылке:

[I] Если вы включаете рамочную структуру, вы должны включитьглавный заголовочный файл.Рамки Umbrella не позволяют напрямую включать заголовки составляющих их подкадров.

...