“#Pragma comment” ne anlama geliyor?


169

#pragma commentAşağıdakiler ne anlama geliyor?

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

Yanıtlar:


188

#pragma commentVisual C ++ ile oluşturulan nesne dosyasına bir yorum bırakacağını belirten bir derleyici yönergesidir. Yorum daha sonra nesne dosyalarını işlerken bağlayıcı tarafından okunabilir.

#pragma comment(lib, libname) bağlayıcıya, 'libname' kitaplığını kitaplık bağımlılıkları listesine eklemesini söyler, sanki onu proje özelliklerine eklemişsiniz gibi Linker->Input->Additional dependencies

Bkz #pragma comment MSDN'de


2
Sadece MSVC mi yoksa GCC / Intel Compiler / Clang'da da benzer bir şey var mı? Klasör yolu ekleme seçeneği var mı (Beğen Linker -> General -> Additional Library Directories)?
Royi

4

Onlara her zaman "derleyici yönergeleri" adını verdim. Derleyiciyi, derleme aşamasında, yukarıda gösterildiği gibi libs dahil dallanma, belirli hataları devre dışı bırakma vb. Gibi şeyler yapmaya yönlendirir.

Derleyici şirketler genellikle özelliklerini kolaylaştırmak için kendi uzantılarını oluştururlar. Örneğin, (inanıyorum) Microsoft "#pragma once" anlaşmasını başlattı ve sadece MS ürünlerinde oldu, şimdi o kadar emin değilim.

Pragma Direktifleri Göreceğiniz tabloda "#pragma comment" içerir.

HTH

Örneğin, GCC'nin kendi # pragma setine sahip olduğundan şüpheleniyorum.


6
Soruyu yanlış anladınız. Pragmaların ne olduğunu sormuyor ve onlara direktifler yerine yorum olarak atıfta bulunuyor. Özellikle ne #pragma commentanlama geldiğini soruyor .
Rob Kennedy

2
Burada garip, aslında bağlayıcı için bir direktif.
Hans Passant

@Hans: Hmm, bu durumda buna "linker yönergesi" deriz?
JustBoo

1
Hayır, hala bir derleyici yönergesi. Derleyiciye, bağlayıcının söz konusu kitaplığı içermesi için bir not bırakmasını söylüyor.
HerrJoebob


0

Pragma yönergeleri işletim sistemi veya makineye özgü (x86 veya x64 vb.) Derleyici seçeneklerini belirtir. Kullanabileceğiniz birkaç seçenek vardır. Ayrıntılar https://msdn.microsoft.com/en-us/library/d9x1s805.aspx adresinde bulunabilir.

#pragma comment( comment-type [,"commentstring"] ) bu biçime sahiptir.

Farklı yorum türleriyle ilgili ayrıntılar için https://msdn.microsoft.com/tr-tr/library/7f0aews7.aspx adresine bakın .

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

Yukarıdaki kod satırları, bağlayıcı tarafından aranması gereken kitaplık adlarını (veya yolunu) içerir. Bu ayrıntılar, nesne dosyasındaki kütüphane arama kaydının bir parçası olarak dahil edilir.

Yani, bu durumda kernel.libve user32.libbağlayıcı tarafından aranır ve son yürütülebilir dosyaya dahil edilir.


0

Yanıtlar ve MSDN tarafından sağlanan belgeler en iyisidir, ancak #pragma commentörneğin link zamanında linker için bir komut göndermek için kullanımını gerektiren çok kullandığım tipik bir durum eklemek istiyorum

#pragma comment(linker,"/ENTRY:Entry")

Giriş noktası formunu değiştirmek için bağlayıcı söylemek WinMain()için Entry()bundan sonra CRTStartuphiç controll aktarmak için gidiyorEntry()

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.