2010-07-19 33 views

Trả lời

12

Tệp tiêu đề là các tệp thực - được lưu trữ trong hệ thống tệp, được tham chiếu theo tên tệp và #include 'd trong các tệp khác (ít nhất, bằng C/C++ hoặc các ngôn ngữ khác sử dụng bộ tiền xử lý macro M4). Các tệp tiêu đề thường là các đoạn mã nhóm là tất cả các phần phụ thuộc lẫn nhau của cùng một mục cụ thể với nhau. Ví dụ: một trò chơi có thể có tệp tiêu đề cho tất cả các kết xuất đồ họa của nó. Mặt khác, không gian tên là một phần tử của ngôn ngữ lập trình - chúng không tồn tại như một đối tượng hệ thống tệp, mà đúng hơn là một chỉ định trong mã cho trình biên dịch biết rằng một số thứ nằm trong không gian tên đó. Các không gian tên thường là các giao diện nhóm (các hàm, các lớp/các cấu trúc, các kiểu) của các mục tương tự (nhưng không nhất thiết phải phụ thuộc lẫn nhau). Ví dụ, không gian tên std trong C++ chứa tất cả các hàm và lớp thư viện chuẩn.

3

Tệp tiêu đề là tệp được dự định đưa vào tệp nguồn. Chúng thường chứa các khai báo của các lớp và hàm nhất định.

Không gian tên cho phép mã phân loại số nhận dạng. Nghĩa là, các lớp, các hàm, v.v. có thể được đặt bên trong một không gian tên, giữ chúng tách biệt với các lớp khác không liên quan. Ví dụ, trong C++ mọi thứ từ thư viện chuẩn nằm trong không gian tên std.

+0

Headerfile chứa Prototype, khai báo. –

+0

@Vish: Bạn đang nói cho tôi hay hỏi tôi? Nói đúng ra, không có thứ gì như nguyên mẫu; đó chỉ là một tuyên bố. – GManNickG

14

Để biết tập tin header là gì, bạn cần phải biết ý nghĩa của "khai".

Nói một cách đơn giản, trong C/C++, việc biên dịch diễn ra theo cách thức nguồn. Nếu tôi có một A.cpp và bên trong tôi sử dụng hàm foo(), sẽ được định nghĩa ở một nơi khác, tôi cần nói với trình biên dịch rằng: "Này, tôi đang dùng foo(), mặc dù bạn không thể thấy nó được định nghĩa bất cứ nơi nào trong nguồn của tôi, đừng lo lắng, nó được định nghĩa trong một nguồn khác ". Họ cách để nói với trình biên dịch về điều này là bằng cách "tuyên bố" foo() trong A.cpp.

Nếu tôi là tác giả của foo(), mọi người sử dụng foo() cần phải viết tờ khai void foo(); trong tệp nguồn của họ. Nó sẽ có rất nhiều công việc trùng lặp và vô nghĩa. Và thật là khó khăn khi tôi nói với anh chàng rằng "sử dụng" foo() để có một tuyên bố chính xác. Do đó, với tư cách là tác giả của foo(), tôi viết một tệp, chứa khai báo sử dụng foo() và phân phối nó để mọi người chỉ có thể "nhập" nội dung tệp vào nguồn của họ. Tệp tôi đang phân phối là tệp Header. Hành động nhập là #include trong C/C++. Có, #include không là gì ngoài việc chèn nội dung của tệp được bao gồm vào vị trí #include.


Không gian tên là một câu chuyện khác. Để làm cho nó ngắn, bạn có thể nghĩ về nó là tên "thật" của hàm/lớp vv ví dụ, nếu tôi làm

namespace FOO { 
    class Bar { } 
} 

Lớp là không thực sự đặt tên Bar, tên của nó "thật" là trong thực tế FOO :: Bar.

C++ cung cấp một số cách để giúp bạn lưu tên thật dài bằng cách "sử dụng".

-3

Không gian tên là từ mới được cung cấp cho tệp headerfile. Để làm cho các phiên bản mới có sẵn.

0

Không gian tên là khái niệm mới về 'ansi C++' để xác định số nhận dạng toàn cầu sẽ được sử dụng thường xuyên trong chương trình của bạn.

Tệp tiêu đề là tệp nguồn hỗ trợ chương trình của bạn bằng cách sử dụng lại mã đáng tin cậy và thử nghiệm do đó tiết kiệm thời gian và công sức !!!!

+0

Câu trả lời của bạn có chứa một số thông tin hữu ích và có thể sẽ được nhận tốt hơn nếu bạn đã nỗ lực nhiều hơn để viết tiếng Anh có thể đọc được và cung cấp thêm chi tiết. Hy vọng rằng bạn có trải nghiệm tốt trên StackOverflow! – spruceb

+0

Cảm ơn! Tôi đã thực hiện một số chỉnh sửa. Lần tới tôi sẽ cải thiện chúng. –

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