it-swarm.com.de

Was bedeutet "Pragma-Kommentar"?

Was bedeutet #pragma comment im Folgenden?

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

#pragma comment ist eine Compiler-Direktive, die Visual C++ anweist, einen Kommentar in der generierten Objektdatei zu hinterlassen. Der Kommentar kann dann vom Linker gelesen werden, wenn er Objektdateien verarbeitet.

#pragma comment(lib, libname) weist den Linker an, die Bibliothek 'libname' zur Liste der Bibliotheksabhängigkeiten hinzuzufügen, als hätten Sie sie in den Projekteigenschaften unter Linker->Input->Additional dependencies hinzugefügt.

Siehe #pragma comment auf MSDN

158
KeatsPeeks

Ich habe sie immer "Compiler-Direktiven" genannt. Sie weisen den Compiler an, Dinge zu tun, verzweigen, einschließlich der oben gezeigten libs, und deaktivieren bestimmte Fehler usw. während der Kompilierungsphase.

Compiler-Unternehmen erstellen normalerweise eigene Erweiterungen, um ihre Funktionen zu vereinfachen. Zum Beispiel (ich glaube) Microsoft hat mit dem "#pragma once" -Angebot angefangen und es war nur bei MS-Produkten, jetzt bin ich mir nicht so sicher.

Pragma Direktiven Es enthält "#pragma comment" in der Tabelle, die Sie sehen.

HTH

Ich vermute, GCC zum Beispiel hat seine eigenen # pragmas.

4
JustBoo

Diese verknüpfen in den in MSVC++ ausgewählten Bibliotheken.

0
bobobobo

Pragma-Direktiven geben Betriebssystem- oder maschinenspezifische Compileroptionen (x86 oder x64 usw.) an. Es stehen verschiedene Optionen zur Verfügung. Details finden Sie in https://msdn.Microsoft.com/de-de/library/d9x1s805.aspx

#pragma comment( comment-type [,"commentstring"] ) hat dieses Format. 

Unter https://msdn.Microsoft.com/de-de/library/7f0aews7.aspx finden Sie Einzelheiten zu verschiedenen Kommentartypen.

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

Die obigen Codezeilen enthalten die Bibliotheksnamen (oder den Pfad), die vom Linker gesucht werden müssen. Diese Details sind als Teil des Bibliothekssuchdatensatzes in der Objektdatei Enthalten.

In diesem Fall werden also kernel.lib und user32.lib vom Linker gesucht und in die endgültige ausführbare Datei aufgenommen.

0
Shrikanth N