Global variable ประกาศนอกฟังก์ชัน/บล็อก ใส่ได้ทุกที่ในไฟล์ (ปกติวางบนสุด)
ในไฟล์เดียว
int g_x = 10; // global
int g_y = 20;
int main() { cout << g_x << g_y; }
ข้ามไฟล์ (Multiple Files)
ไฟล์ globals.cpp:
int g_x = 10; int g_y = 20;
ไฟล์ main.cpp:
#include <iostream>
extern int g_x; // บอกคอมไพเลอร์ว่าตัวแปรอยู่ที่อื่น
extern int g_y;
int main() { cout << g_x << g_y; }
คอมไพล์
g++ globals.cpp main.cpp -o program
Best Practices
- ลดการใช้ global variables ใช้ namespace หรือ singleton แทน
- ใช้
externใน header file ประกาศ แล้ว define ใน .cpp เพียงที่เดียว - พิจารณา
inlinevariables (C++17) สำหรับ header-only globals