Đó là tất cả về mối liên kết .
Các câu trả lời trước cung cấp giải thích tốt về extern
.
Nhưng tôi muốn thêm một điểm quan trọng.
Bạn hỏi về extern
trong C ++ không phải trong C và tôi không biết tại sao không có câu trả lời đề cập tới trường hợp khi extern
đi kèm với const
bằng C ++.
Trong C ++, một const
biến có liên kết nội bộ theo mặc định (không giống như C).
Vì vậy, kịch bản này sẽ dẫn đến lỗi liên kết :
Nguồn 1:
const int global = 255; //wrong way to make a definition of global const variable in C++
Nguồn 2:
extern const int global; //declaration
Nó cần phải như thế này:
Nguồn 1:
extern const int global = 255; //a definition of global const variable in C++
Nguồn 2:
extern const int global; //declaration
extern
nhiều lần. Các công cụ của Microsoft đã tạo ra lỗi liên kết cho các ký hiệu bị thiếu khi các bảng trong tệp nguồn khác chỉ được xác định. Vấn đề là, bảng đãconst
và trình biên dịch C ++ đã quảng bá nóstatic
trong đơn vị dịch thuật. Xem, ví dụ,ariatab.cpp
vàkalynatab.cpp
.