2010-08-14 46 views
121

#pragma comment có nghĩa là gì sau đây?"Nhận xét #pragma" có nghĩa là gì?

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

@Aziz, nhận xét của bạn sẽ làm cho một câu trả lời tốt cho câu hỏi này –

+1

@Tim ... cảm ơn .. nhưng tôi không nghĩ rằng một liên kết đến tài liệu sẽ là đủ như một câu trả lời, ngay cả khi nó thực sự trả lời câu hỏi :) – Aziz

+1

@ Aziz: cuộc gọi công bằng nhưng có vẻ như chưa ai hỏi câu hỏi cơ bản như vậy. Hãy làm cho nó qua với vì vậy chúng tôi sẽ không bao giờ phải nhìn vào nó một lần nữa :) –

Trả lời

134

#pragma comment là chỉ thị trình biên dịch cho biết Visual C++ để lại nhận xét trong tệp đối tượng được tạo. Nhận xét sau đó có thể được đọc bởi trình liên kết khi nó xử lý các tệp đối tượng.

#pragma comment(lib, libname) kể mối liên kết để thêm thư viện 'libname' vào danh sách các thư viện phụ thuộc, như thể bạn đã thêm nó trong các thuộc tính dự án tại Linker->Input->Additional dependencies

Xem #pragma comment trên MSDN

1

Các liên kết này trong các thư viện được chọn trong MSVC++.

4

Tôi luôn gọi chúng là "chỉ thị trình biên dịch". Chúng trực tiếp trình biên dịch để làm những việc, phân nhánh, bao gồm các thư viện libs như được hiển thị ở trên, vô hiệu hóa các lỗi cụ thể, v.v., trong giai đoạn biên dịch.

Các công ty biên dịch thường tạo các tiện ích mở rộng của riêng họ để tạo điều kiện cho các tính năng của họ. Ví dụ, (tôi tin) Microsoft đã bắt đầu thỏa thuận "#pragma một lần" và nó chỉ có trong các sản phẩm MS, bây giờ tôi không chắc lắm.

Pragma Directives Nó bao gồm "#pragma comment" trong bảng bạn sẽ thấy.

HTH

Tôi nghi ngờ GCC, ví dụ, có tập hợp riêng của # pragma.

+3

Bạn hiểu nhầm câu hỏi. Anh ta không hỏi pragmas là gì và đề cập đến chúng như những lời bình luận thay vì chỉ thị. Anh ta hỏi cụ thể ý nghĩa của '#pragma comment'. –

+2

Lúng túng ở đây, nó thực sự là một chỉ thị cho trình liên kết. –

+0

@Hans: Hmm, vậy trong trường hợp này, chúng tôi gọi đó là "chỉ thị liên kết"? – JustBoo