ti-enxame.com

O que significa "#pragma comment"?

O que #pragma comment significa no seguinte?

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

#pragma comment é uma diretiva de compilador que indica o Visual C++ para deixar um comentário no arquivo de objeto gerado. O comentário pode ser lido pelo vinculador quando ele processa arquivos de objeto.

#pragma comment(lib, libname) informa ao vinculador para adicionar a biblioteca 'libname' à lista de dependências da biblioteca, como se você tivesse adicionado nas propriedades do projeto em Linker->Input->Additional dependencies

Veja #pragma comment no MSDN

158
KeatsPeeks

Eu sempre os chamei de "diretivas de compilador". Eles direcionam o compilador para fazer coisas, ramificando, incluindo libs como mostrado acima, desabilitando erros específicos etc., durante a fase de compilação.

As empresas de compiladores geralmente criam suas próprias extensões para facilitar seus recursos. Por exemplo, (acredito) a Microsoft iniciou o negócio "#pragma once" e foi apenas em produtos MS, agora não tenho tanta certeza.

Pragma Directives Inclui "#pragma comment" na tabela que você verá.

HTH

Eu suspeito que o GCC, por exemplo, tenha seu próprio conjunto de # pragma's.

4
JustBoo

Esses links nas bibliotecas selecionadas no MSVC++.

0
bobobobo

As diretivas Pragma especificam as opções de compilador do sistema operacional ou específico da máquina (x86 ou x64 etc.). Tem várias opções acessíveis. Detalhes podem ser encontrados em https://msdn.Microsoft.com/pt-br/library/d9x1s805.aspx

#pragma comment( comment-type [,"commentstring"] ) tem este formato. 

Consulte https://msdn.Microsoft.com/en-us/library/7f0aews7.aspx para obter detalhes sobre diferentes tipos de comentários.

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

As linhas de código acima incluem os nomes da biblioteca (ou caminho) que precisam ser pesquisados ​​pelo vinculador. Esses detalhes são incluídos como parte do registro de pesquisa de biblioteca no arquivo de objeto .

Portanto, neste caso, kernel.lib e user32.lib são pesquisados ​​pelo vinculador e incluídos no executável final.

0
Shrikanth N