2010-06-22 47 views
5

K & R nói:liên kết bên ngoài trong C

bởi các biến bên ngoài mặc định và chức năng có những tài sản mà tất cả các tài liệu tham khảo để họ cùng tên, thậm chí từ các chức năng biên dịch riêng rẽ, là tài liệu tham khảo để điều tương tự

Xin giải thích điều này có nghĩa, tôi không hiểu nó

+3

Xin lỗi, bạn có quen với c? Theo tôi, K & R không phải là một cuốn sách giới thiệu phù hợp cho người mới. – yehnan

+0

Tuy nhiên, làm cho nỗ lực để hiểu K & R sẽ cung cấp cho bạn một nắm bắt thực sự tốt của C. Tôi nói giữ nó. –

+1

Tôi không phản đối câu hỏi. Tôi để ý rằng ashma đã hỏi vài câu. Chân thành mong anh ta có thể sử dụng một cuốn sách phù hợp hơn cho anh ta/cô ấy. – yehnan

Trả lời

5

Hãy xem xét hai chức năng:

extern int extern_sqr(int i) { return i * i; } 
static int static_dbl(int i) { return i * 2; } 

Sau đó, những người tham chiếu đến extern_sqr sẽ đề cập đến chức năng đó. Điều này trái với liên kết static, trong đó chỉ những người từ bên trong "đơn vị dịch" (gần tệp được xác định) có thể truy cập chức năng static_dbl.

Nó chỉ ra rằng, extern được ngụ ý theo mặc định trong c. Vì vậy, bạn sẽ nhận được các hành vi tương tự, nếu bạn đã viết:

int extern_sqr(int i) { return i * i; } 

Mới hơn tiêu chuẩn C vẫn đòi hỏi một "tuyên bố chức năng" như vậy, thường là trong một tập tin tiêu đề ở đâu đó, bạn sẽ gặp phải:

int extern_sqr(int i); // Note: 'i' is optional 

nào nói "ở đâu đó, ở một số đơn vị dịch thuật khác, tôi có một chức năng gọi là extern_sqr.

Logic này cũng áp dụng cho các biến.

+1

Bạn cũng có thể thêm điều đó vào khai báo hàm, tên biến là tùy chọn vì bạn có thể thấy int extern_sqr (int); thay thế. – Maximus

+1

@Maximus: đã chỉnh sửa, cảm ơn. Tôi cũng có thể đi vào các loại tham số được _completely_ tùy chọn, tùy thuộc vào tiêu chuẩn nào, nhưng tại sao nhầm lẫn mọi thứ :) – Stephen

0

bên ngoài vari ables và chức năng là toàn cầu, tức là giữ các giá trị giống nhau (cho các biến) hoặc các định nghĩa (cho các hàm) ngay cả khi được gọi từ các tệp * .c khác nhau trong chương trình của bạn.

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