Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

เมื่อไหร่ควรใช้ extern ใน C/C++

ตัวแปร External (External variables) เรียกอีกอย่างว่า Global variables คือตัวแปรที่ประกาศนอกฟังก์ชัน และเข้าถึงได้ทั่วทั้งโปรแกรม คีย์เวิร์ด extern ใช้สำหรับประกาศ (declare) และกำหนด (define) ตัวแปร external

นอกจากนี้ extern "C" ใช้ใน C++ เพื่อประกาศฟังก์ชันที่เขียนและคอมไพล์ในภาษา C เพื่อให้ C++ เรียกใช้ C libraries ได้

ไวยากรณ์ของ extern

extern datatype variable_name;  // ประกาศตัวแปร external
extern datatype func_name();    // ประกาศฟังก์ชัน external

ตัวอย่างการใช้งาน extern

#include <stdio.h>

extern int x = 32;  // กำหนดและประกาศ external variable x
int b = 8;          // global variable ธรรมดา

int main() {
    extern int b;   // ประกาศว่า b เป็น external (อ้างถึงตัวนอก)
    printf("The value of extern variables x and b : %d,%d\n", x, b);
    x = 15;
    printf("The value of modified extern variable x : %d\n", x);
    return 0;
}

ผลลัพธ์

The value of extern variables x and b : 32,8
The value of modified extern variable x : 15

คำอธิบาย

  1. extern int x = 32; - กำหนดค่าและประกาศ x เป็น external variable
  2. int b = 8; - global variable ธรรมดา (เป็น external โดยอัตโนมัติ)
  3. ใน main(): extern int b; บอกคอมไพเลอร์ว่า b ถูกกำหนดที่อื่น (ในที่นี้คือ global scope เดียวกัน)
  4. สามารถแก้ไขค่า x ได้ เพราะไม่ได้ประกาศเป็น const

กรณีการใช้งานจริง (Use Cases)

1. แบ่งปันตัวแปรระหว่างไฟล์ (Multiple Source Files)

file1.c

int global_counter = 0;  // Definition

file2.c

extern int global_counter;  // Declaration only
void increment() { global_counter++; }

2. ใช้ร่วมกับ extern "C" สำหรับ C++ เรียก C Library

// C header: mylib.h
#ifdef __cplusplus
extern "C" {
#endif

void c_function(int x);

#ifdef __cplusplus
}
#endif

สรุป

  • extern ใช้สำหรับประกาศ (declaration) ไม่ใช่กำหนด (definition) - ยกเว้นกรณีมีการกำหนดค่าเริ่มต้นพร้อมๆ กัน
  • ช่วยให้หลายไฟล์ (.c/.cpp) เข้าถึงตัวแปร/ฟังก์ชันเดียวกันได้
  • extern "C" ป้องกัน name mangling ของ C++ เพื่อความเข้ากันได้กับ C