C ++ bao gồm và nhập khẩu chênh lệch


Câu trả lời:


61

#import là một thứ dành riêng cho Microsoft, dường như chỉ dành cho những thứ COM hoặc .NET.

#include là một câu lệnh tiền xử lý C / C ++ chuẩn, được sử dụng để bao gồm các tệp tiêu đề (hoặc đôi khi là mã nguồn khác) trong tệp mã nguồn của bạn.


6
Đây không phải là sự thật. Chỉ thị #import đã chính thức được nhóm gcc không chấp nhận trong phiên bản 3.4 và hoạt động tốt 99% trong tất cả các phiên bản trước đó của gcc hỗ trợ
Brian R. Bondy 5/10/08

6
... hỗ trợ #import
Brian R. Bondy

1
Tò mò, tôi đã không biết về điều đó. Có lẽ tôi nên nói rằng đó là một thứ dành riêng cho COM và .NET.
Head Geek

23
#Import được gcc hỗ trợ là một cách không thể di chuyển để bao gồm tiêu đề một lần duy nhất: <a href=" gcc.gnu.org/onlineocs/gcc-4.3.2/cpp/…> . Nó hoàn toàn không liên quan đến Microsoft COM # nhập khẩu.
fizzer

3
GCC #import thực chất là một lệnh tiền xử lý Objective-C hoạt động với các tệp .c trong gcc và clang (ngoại trừ ở chế độ pedantic).
Michael Morris

83

Nhập trong VC ++: #import dành cho thư viện kiểu hoặc .tlbs (nội dung COM).

Nội dung của thư viện kiểu được chuyển đổi thành các lớp C ++, chủ yếu mô tả các giao diện COM cho bạn một cách tự động, và sau đó nó được đưa vào tệp của bạn.

Lệnh #importnày được Microsoft giới thiệu như một phần mở rộng cho ngôn ngữ C ++. Bạn có thể đọc về nó tại bài viết MSDN này .

Lệnh #importnày cũng được sử dụng với .NET / CLI.

Nhập trong gcc: Nhập trong gcc khác với nhập trong VC ++. Đó là một cách đơn giản để chỉ bao gồm tiêu đề một lần. (Trong VC ++ và GCC, bạn có thể thực hiện việc này thông qua#pragma một lần)

Các #importchỉ thị chính thức được undeprecated bởi nhóm gcc trong phiên bản 3.4 và hoạt động tốt 99% thời gian trong tất cả các phiên bản trước của gcc mà hỗ trợ

Bao gồm: #include dành cho hầu hết các tệp tiêu đề, nhưng để thêm nội dung vào tệp hiện tại của bạn. #includelà một phần của tiêu chuẩn C ++. Bạn có thể đọc về nó tại bài viết MSDN này .


3
Các liên kết MSDN của bạn đã cũ. Cảm ơn Microsoft.
Mark Ransom

8

#importtổng thể là một giải pháp cho thông thường

#ifndef ...
#define ...
#include ...
#endif

làm việc xung quanh. #importchỉ bao gồm một tệp nếu nó chưa được bao gồm trước đó.

Có thể đáng chú ý là Objective-C của Apple cũng sử dụng các #importcâu lệnh.


4

import cũng là một trong những từ khóa được liên kết với n2073, Mô-đun trong C ++ , được Daveed Vandevoorde đề xuất cho ủy ban ngôn ngữ vào tháng 9 năm 2006. Tôi không đủ kiến ​​thức về ngôn ngữ để biết liệu đề xuất đó đã bị tạm dừng hay nó đang chờ triển khai (bằng chứng về khái niệm) từ tác giả hoặc người khác ...


Daveed là một nhân viên EDG vào thời điểm đó, vì vậy tôi hy vọng họ có mã làm việc như vậy.
MSalters

1
Tôi chắc chắn hy vọng họ đã thực hiện các công việc cần thiết, vì sẽ rất tốt nếu chuyển từ '#include' sang cơ chế nhập. Nhưng tôi đã nghe thấy rất nhiều về tính năng này và tôi khá chắc chắn rằng nó không có trong C ++ 0X. Có lẽ một lúc nào đó trước khi tôi nghỉ hưu; ^) ~
Don Wakefield

1
Như tôi lo sợ, đã vài năm nữa: Mô-đun trong C ++ 09?
Don Wakefield

4

Xin lưu ý rằng trong gcc 4.1, #import được phản đối. Nếu bạn sử dụng nó, bạn sẽ nhận được cảnh báo:

#import là một tiện ích mở rộng GCC không được dùng nữa


Điều này không trả lời câu hỏi.
SS Anne
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.