Bộ chỉ định lớp lưu trữ bên ngoài cho phép bạn khai báo các đối tượng mà một số tệp nguồn có thể sử dụng. Một khai báo bên ngoài làm cho biến được mô tả có thể sử dụng được bởi phần tiếp theo của tệp nguồn hiện tại. Tuyên bố này không thay thế định nghĩa. Khai báo được sử dụng để mô tả biến được định nghĩa bên ngoài.
Một khai báo extern có thể xuất hiện bên ngoài một hàm hoặc ở phần đầu của một khối. Nếu khai báo mô tả một chức năng hoặc xuất hiện bên ngoài một chức năng và mô tả một đối tượng có liên kết bên ngoài, thì từ khóa extern là tùy chọn.
Nếu một khai báo cho một số nhận dạng đã tồn tại trong phạm vi tệp, thì bất kỳ khai báo bên ngoài nào của cùng một số nhận dạng được tìm thấy trong một khối đều tham chiếu đến cùng một đối tượng. Nếu không có khai báo nào khác cho số nhận dạng tồn tại trong phạm vi tệp, thì số nhận dạng có liên kết bên ngoài.
C ++ hạn chế việc sử dụng trình chỉ định lớp lưu trữ bên ngoài đối với tên của các đối tượng hoặc hàm. Sử dụng trình xác định bên ngoài với khai báo kiểu là bất hợp pháp. Một khai báo bên ngoài không thể xuất hiện trong phạm vi lớp.
Bạn có thể sử dụng từ khóa extern như sau để chia sẻ biến giữa các tệp -
file3.h
extern int global_variable; /* Declaration of the variable */
file1.c
#include "file3.h" /* Declaration made available here */ #include "prog1.h" /* Function declarations */ /* Variable defined here */ int global_variable = 37; /* Definition checked against declaration */ int increment(void) { return global_variable++; }
file2.c
#include "file3.h" #include "prog1.h" #include <stdio.h> void use_it(void) { printf("Global variable: %d\n", global_variable++); }
Câu hỏi sau tại stackoverflow nắm bắt hoàn toàn bản chất của từ khóa extern:https://stackoverflow.com/questions/1433204/how-do-i-use-extern-to-share-variables-between-source-files.