Đó 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ề externtrong 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 constbằng C ++.
Trong C ++, một constbiế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
               
              
externnhiề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 đãconstvà trình biên dịch C ++ đã quảng bá nóstatictrong đơn vị dịch thuật. Xem, ví dụ,ariatab.cppvàkalynatab.cpp.