2013-05-12 33 views
10

Các SWIG docs giải thích hai chỉ thị này như sau:SWIG: Sự khác biệt giữa% nhập khẩu và% bao gồm

  • %include: "Để bao gồm một tập tin vào một giao diện SWIG, sử dụng các chỉ thị %include ... Không giống như, #include , %include bao gồm mỗi tệp một lần (và sẽ không tải lại tệp trên các khai báo %include tiếp theo). Do đó, không cần sử dụng các trình bao gồm trong các giao diện SWIG. "

  • %import: ". SWIG cung cấp một chỉ thị tập tin bao gồm với các chỉ thị %import ... Mục đích của %import là để thu thập thông tin nhất định từ một tập tin giao diện SWIG hoặc một tập tin tiêu đề mà không thực sự tạo ra bất kỳ mã wrapper Những thông tin này thường bao gồm tờ khai loại (ví dụ: typedef) cũng như các lớp C++ có thể được sử dụng như là cơ sở-lớp dành cho khai báo lớp trong giao diện. "

câu hỏi của tôi là sự khác nhau giữa hai chỉ thị này là gì và những gì là ưu/khuyết điểm của việc sử dụng mỗi?


P.S. Chỉ cho một số thông tin cơ bản. Tôi có một phần mở rộng C++ - python đơn giản xây dựng và hoạt động khi tôi sử dụng một trong các chỉ thị trên. Tuy nhiên, một (%import) có ít cảnh báo hơn khi tôi gọi swig -c++ -python my_file.i.

Trả lời

10

Cách SWIG hoạt động là nó giả định rằng bất kỳ khai báo C++ hợp lệ nào bạn cung cấp đều được tiếp xúc với ngôn ngữ đích. Do đó, bất kỳ mã C++ nào SWIG được cung cấp sẽ được sử dụng để tạo ra một giao diện.

%import là cơ chế bao gồm ngăn không cho tạo giao diện cho mã bao gồm. Đó là sự khác biệt. Vì vậy, câu hỏi bạn hỏi khi đưa tiêu đề là "Tôi có muốn tất cả nội dung trong tiêu đề này được hiển thị với ngôn ngữ đích không?" Nếu câu trả lời là "không", thì bạn sử dụng %import.

Các vấn đề liên quan