Điều này #pragma commentcó nghĩa gì sau đây?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Điều này #pragma commentcó nghĩa gì sau đây?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Câu trả lời:
#pragma commentlà một lệnh biên dịch chỉ ra 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) nói với trình liên kết thêm thư viện 'libname' vào danh sách các phụ thuộc thư viện, như thể bạn đã thêm nó vào thuộc tính dự án tại Linker->Input->Additional dependencies
Xem #pragma nhận xét về MSDN
Tôi đã luôn gọi chúng là "chỉ thị trình biên dịch." Họ chỉ đạo trình biên dịch thực hiện mọi việc, phân nhánh, bao gồm các lib 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 phần 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 của MS, bây giờ tôi không chắc lắm.
Chỉ thị thực dụng Nó bao gồm "#pragma bình luận" trong bảng bạn sẽ thấy.
HTH
Tôi nghi ngờ GCC, ví dụ, có bộ # pragma của riêng họ.
#pragma commentlà gì .
Các chỉ thị thực dụng chỉ định các tùy chọn trình biên dịch của hệ điều hành hoặc máy cụ thể (x86 hoặc x64, v.v.). Có một số tùy chọn có sẵn. Thông tin chi tiết có thể được tìm thấy trong https://msdn.microsoft.com/en-us/l Library / d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] ) có định dạng này.
Tham khảo https://msdn.microsoft.com/en-us/l Library / 7f0aews7.aspx để biết chi tiết về các loại nhận xét khác nhau.
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Các dòng mã trên bao gồm tên thư viện (hoặc đường dẫn) cần được tìm kiếm bởi trình liên kết. Các chi tiết này được bao gồm như một phần của bản ghi tìm kiếm thư viện trong tệp đối tượng.
Vì vậy, trong trường hợp này kernel.libvà user32.libđược tìm kiếm bởi trình liên kết và được bao gồm trong tệp thực thi cuối cùng.
Các câu trả lời và tài liệu do MSDN cung cấp là tốt nhất, nhưng tôi muốn thêm một trường hợp điển hình mà tôi sử dụng rất nhiều yêu cầu sử dụng #pragma commentđể gửi lệnh đến trình liên kết tại thời điểm liên kết chẳng hạn
#pragma comment(linker,"/ENTRY:Entry")
nói với trình liên kết để thay đổi biểu mẫu điểm WinMain()vào Entry()sau đó CRTStartupsẽ chuyển điều khiển sangEntry()
Linker -> General -> Additional Library Directories)?