Что означает «#Pragma комментарий»?
-
28-09-2019 - |
Вопрос
Что значит #pragma comment
значит в следующем?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Решение
#pragma comment
Директива компилятора, которая указывает на Visual C ++, чтобы оставить комментарий в сгенерированном объекте. Затем комментарий может быть прочитан линкером, когда он обрабатывает объектные файлы.
#pragma comment(lib, libname)
Рассказывает линкера добавить библиотеку «libname» в список связанных с ними библиотечных зависимостей, как если бы вы добавили его в свойства проекта в Linker->Input->Additional dependencies
Видеть #Pragma комментарий на MSDN
Другие советы
Я всегда называл их «директивами компилятора». Они направляют компилятора, чтобы делать вещи, разветвление, в том числе Libs, как показано выше, отключение определенных ошибок и т. Д., Во время фазы компиляции.
Компиляторы компании обычно создают свои собственные расширения для облегчения их функций. Например, (я верю) Microsoft начал сделку «#pragma один раз», и это было только в MS Products, теперь я не уверен.
Директивы прагмы Он включает в себя «#Pragma комментарий» в таблице вы увидите.
Емкость
Я подозреваю, например, имеет свой собственный набор # прагмы.
Эти ссылки в библиотеках выбраны в MSVC ++.
Директивы Pragma Укажите операционную систему или варианты компилятора операционной системы или машины (X86 или X64 ETC). Есть несколько вариантов доступны. Детали можно найти в 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
ищется линкером и включены в окончательный исполняемый файл.
Ответы и документация, предоставленная MSDN, является лучшим, но я хотел бы добавить один типичный случай, который я использую много, которое требует использования использования #pragma comment
Чтобы отправить команду на линкер по ссылке, например,
#pragma comment(linker,"/ENTRY:Entry")
Скажите линкеру, чтобы изменить форму точки входа WinMain()
к Entry()
После этого CRTStartup
собирается перенести контроль на Entry()