Что означает" #pragma comment"?

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

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

4 ответов


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

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

посмотреть в#Pragma комментарий на MSDN


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

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

Директивы Pragma это включает "# Pragma comment " в таблице, которую вы увидите.

HTH

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


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


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

#pragma comment( comment-type [,"commentstring"] ) имеет следующий формат.

Refer https://msdn.microsoft.com/en-us/library/7f0aews7.aspx для деталей о различном коммент-типе.

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

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

Итак, в данном случае kernel.lib и user32.lib ищутся компоновщиком и включаются в окончательный исполняемый файл.