Что означает "комментарий к прагме"? - PullRequest
162 голосов
/ 14 августа 2010

Что означает #pragma comment в следующем?

#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")

Ответы [ 4 ]

170 голосов
/ 14 августа 2010

#pragma comment - это директива компилятора, которая указывает Visual C ++ оставить комментарий в сгенерированном объектном файле.Комментарий может быть прочитан компоновщиком при обработке объектных файлов.

#pragma comment(lib, libname) говорит компоновщику добавить библиотеку 'libname' в список зависимостей библиотеки, как если бы вы добавили ее в проектсвойства в Linker->Input->Additional dependencies

См. # комментарий прагмы на MSDN

4 голосов
/ 14 августа 2010

Я всегда называл их "директивами компилятора".Они предписывают компилятору выполнять какие-либо действия: выполнять ветвление, включая библиотеки, как показано выше, отключать определенные ошибки и т. Д. На этапе компиляции.

Компании-компиляторы обычно создают свои собственные расширения, чтобы упростить свои функции.Например, (я полагаю) Microsoft заключила сделку "#pragma Once", и это было только в продуктах MS, теперь я не так уверен.

Прагма Директивы Он включает в себя "#pragma comment" в таблице, которую вы увидите.

HTH

Я подозреваю, что, например, у GCC есть собственный набор # pragma.

0 голосов
/ 17 июля 2018

В директивах Pragma указываются параметры компилятора для операционной системы или компьютера (x86 или x64 и т. Д.).Есть несколько доступных вариантов.Подробности можно найти в https://msdn.microsoft.com/en-us/library/d9x1s805.aspx

#pragma comment( comment-type [,"commentstring"] ) в этом формате.

Подробнее о различных типах комментариев см. https://msdn.microsoft.com/en-us/library/7f0aews7.aspx.

#pragma comment(lib, "kernel32") #pragma comment(lib, "user32")

Приведенные выше строки кода включают имена библиотек (или пути)должен быть найден компоновщиком.Эти данные включены как часть записи поиска библиотеки в объектном файле.

Таким образом, в этом случае kernel.lib и user32.lib ищутся компоновщиком и включаются в конечный исполняемый файл.

0 голосов
/ 14 августа 2010

Эти ссылки в библиотеках, выбранных в MSVC ++.

...