Поделиться через


комментарий (C/C++)

Вставляет запись комментария в объектный или исполняемый файл.

#pragma comment( comment-type [,"commentstring"] )

Заметки

Тип-комментария обозначает один из предопределенных идентификаторов (см. ниже), которые задают тип записи комментария. Необязательный параметр commentstring обозначает строковый литерал, который содержит дополнительную информацию (для некоторых типов комментариев). Поскольку параметр commentstring обозначает строковый литерал, он соблюдает все правила, действующие для строковых литералов в отношении escape-символов, внедренных кавычек (") и конкатенации.

  • компилятор
    Задает в объектном файле имя и номер версии компилятора. Эта запись комментария игнорируется компоновщиком. Если для этого типа записи будет указан параметр commentstring, компилятор выведет предупреждение.

  • exestr
    Задает в объектном файле commentstring, которая во время компоновки помещается в исполняемый файл. Эта строка не загружается в память вместе с исполняемым файлом, однако ее можно обнаружить при помощи программы, которая находит в файлах печатаемые строки. Записи комментариев этого типа позволяют, в частности, вставлять в исполняемый файл информацию о номере версии и т. д.

    Использовать параметр exestr не рекомендуется; в следующих выпусках он будет удален. Компоновщик не обрабатывает эту запись комментария.

  • lib
    Задает в объектном файле запись поиска библиотеки. Этот тип комментария должен сопровождаться commentstring с именем библиотеки, которую должен найти компоновщик. В нем также можно указать путь к ней. Имя библиотеки указывается в объектном файле после записей поиска по библиотекам по умолчанию. Компоновщик ищет эту библиотеку точно так же, как если бы она была указана в командной строке (если библиотека не была задана при помощи параметра /nodefaultlib). В один и тот же исходный файл можно вставить несколько записей поиска библиотеки. В объектном файле они будут располагаться в том же порядке, что и в исходном.

    Если для вас важно, в каком порядке расположены и добавленные библиотеки и библиотека по умолчанию, задайте при компиляции ключ /Zl. В этом случае в объектный модуль не будет вставлено имя библиотеки по умолчанию. Далее можно вставить еще одну директиву #pragma comment и с ее помощью добавить имя библиотеки по умолчанию уже после добавленной библиотеки. Библиотеки, добавленные при помощи этих директив, будут находиться в объектном модуле в том же порядке, в каком они указаны в исходном коде.

  • компоновщик
    Задает параметр компоновщика в объектном файле. Благодаря этому параметр компоновщика можно не передавать из командной строки и не указывать в среде разработки, а задать непосредственно в комментарии. Например, в нем можно задать параметр /include, чтобы принудительно включить символ:

    #pragma comment(linker, "/include:__mySymbol")
    

    Идентификатору компоновщика могут передаваться только следующие параметры (тип-комментария):

  • user
    Вставляет в объектный файл комментарий общего рода. commentstring содержит текст комментария. Эта запись комментария игнорируется компоновщиком.

Следующая директива pragma указывает компоновщику найти библиотеку EMAPI.LIB во время компоновки. Сначала компоновщик ищет ее в текущем рабочем каталоге, а затем по пути, заданном в переменной среды LIB.

#pragma comment( lib, "emapi" )

Следующая директива pragma указывает компилятору вставить в объектный файл имя и номер версии компилятора:

#pragma comment( compiler )

Примечание

Если комментарий принимает параметр commentstring, в нем можно использовать макрос. Макрос можно вставить в любое место, в котором может использоваться строковый литерал (при условии, что макрос развертывается в строковый литерал).Кроме того, можно указать конкатенацию любого набора строковых литералов и макросов, которые развертываются в строковые литералы.Допустимым примером является следующая инструкция:

#pragma comment( user, "Compiled on " __DATE__ " at " __TIME__ ) 

См. также

Ссылки

Директивы Pragma и ключевое слово __Pragma