Нужно ли включать "Windows .h", чтобы неявно использовать / связываться с WindowsAPI? - PullRequest
0 голосов
/ 12 февраля 2020

Цитата из статьи Википедии из "Windows .h" (выделите мое):

"windows .h является Windows -специфическим * Заголовочный файл 1026 * для языков программирования C и C ++, который содержит объявления для всех функций в Windows API, всех распространенных макросов, используемых программистами Windows, и всех типов данных, используемых различными функциями и подсистем. Он определяет очень большое количество Windows спецификаций c функций **, которые можно использовать в C. API Win32 может быть добавлен в проект программирования C путем включения файла заголовка и ссылка на соответствующие библиотеки . Чтобы использовать функции из xxxx.dll, программа должна быть связана с xxxx.lib (или libxxxx.dll.a в MinGW) . Некоторые заголовки не связаны с .dll, но с библиотекой stati c (например, scrnsave.h требуется scrnsave.lib). "


Мой вопрос:

Нужно ли включать заголовок файл windows.h в мой проект C / C ++, если я хочу свой исполняемый файл ( который был создан для работы только на Windows) для неявного взаимодействия с / или использования WindowsAPI?

Или компилятор автоматически, если я его не указал, и неявно хочу получить доступ к WindowsAPI?

Я не имею в виду явное использование функций, макросов или типов данных, определенных в windows.h. Скорее, если я хочу получить неявный доступ к компонентам WindowsAPI через оболочку, например с помощью cmd.exe или PowerShell.

Ответы [ 2 ]

4 голосов
/ 12 февраля 2020

Это относится не только к "Windows .h" с Win32 API, но и (почти) к любому заголовочному файлу, связанному с определенным API. Как правило, я бы сказал, что вам не нужно включать заголовок, пока он вам действительно не понадобится. И нужно ли вам это или нет в большинстве случаев, указано в документации API.

Например, документация для CreateWindow говорит вам, что вам нужно include Windows.h

Так пока вы не будете использовать ту или иную функцию (макрос, класс, #definition и т. д. c.), вам не нужно #include соответствующий заголовок.

2 голосов
/ 12 февраля 2020

windows.h - это «суперзаголовок», включающий практически все мыслимые. Части Specifi c Win API также имеют свои собственные заголовки, так что вы также можете просто включить те, которые вас интересуют.

Посмотрите функцию API Speci c на MSDN. Если в нем указано, что функция находится в указанном заголовке c, то вам может потребоваться включить только этот заголовок. Если он хорошо компилируется и ссылки, то вам не нужно windows .h.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...