Biến ngoài (external variables) còn gọi là biến toàn cục (global variables). Chúng được định nghĩa bên ngoài hàm và có sẵn toàn cục trong suốt quá trình thực thi. Từ khóa extern dùng để khai báo và định nghĩa các biến ngoài.
Từ khóa extern "C" dùng trong C++ để khai báo hàm được triển khai và biên dịch bằng C, cho phép sử dụng thư viện C trong C++.
Cú pháp
extern datatype variable_name; // Khai báo biến extern
extern datatype func_name(); // Khai báo hàm extern
Trong đó:
- datatype – Kiểu dữ liệu (int, char, float...)
- variable_name – Tên biến
- func_name – Tên hàm
Ví dụ
#include <stdio.h>
extern int x = 32; // Định nghĩa và khởi tạo
int b = 8; // Biến toàn cục ngầm extern
int main() {
extern int b; // Khai báo tham chiếu extern
printf("Gia tri bien extern x va b: %d,%d\n", x, b);
x = 15;
printf("Gia tri bien extern x sau khi thay doi: %d\n", x);
return 0;
}
Kết quả
Gia tri bien extern x va b: 32,8
Gia tri bien extern x sau khi thay doi: 15
Giải thích: Hai biến x và b được khai báo toàn cục. Trong main(), extern int b; chỉ là khai báo tham chiếu (không định nghĩa lại). Giá trị được in ra và x được sửa đổi thành 15.
Khi nào dùng extern?
- Chia sẻ biến toàn cục giữa nhiều file
.c/.cpp(khai báoexterntrong header, định nghĩa trong một file nguồn). - Gọi hàm C từ C++ qua
extern "C". - Khai báo trước (forward declaration) cho biến/hàm định nghĩa sau.