ตัวระบุคลาสการจัดเก็บข้อมูลภายนอกช่วยให้คุณประกาศอ็อบเจ็กต์ที่ไฟล์ต้นทางหลายไฟล์สามารถใช้ได้ การประกาศภายนอกทำให้ตัวแปรที่อธิบายสามารถใช้งานได้โดยส่วนที่ต่อจากนี้ไปของไฟล์ต้นฉบับปัจจุบัน การประกาศนี้ไม่ได้แทนที่คำจำกัดความ การประกาศใช้เพื่ออธิบายตัวแปรที่กำหนดโดยภายนอก
การประกาศภายนอกสามารถปรากฏภายนอกฟังก์ชันหรือที่จุดเริ่มต้นของบล็อก หากการประกาศอธิบายฟังก์ชันหรือปรากฏนอกฟังก์ชันและอธิบายอ็อบเจ็กต์ที่มีการเชื่อมโยงภายนอก คีย์เวิร์ด extern จะเป็นทางเลือก
หากมีการประกาศตัวระบุอยู่แล้วที่ขอบเขตของไฟล์ การประกาศภายนอกของตัวระบุเดียวกันที่พบในบล็อกจะอ้างอิงถึงอ็อบเจ็กต์เดียวกันนั้น หากไม่มีการประกาศอื่นสำหรับตัวระบุที่ขอบเขตไฟล์ ตัวระบุนั้นมีการเชื่อมโยงภายนอก
C++ จำกัดการใช้ตัวระบุคลาสการจัดเก็บภายนอกสำหรับชื่อของอ็อบเจ็กต์หรือฟังก์ชัน การใช้ตัวระบุภายนอกที่มีการประกาศประเภทนั้นผิดกฎหมาย การประกาศภายนอกไม่สามารถปรากฏในขอบเขตของคลาสได้
คุณสามารถใช้คีย์เวิร์ดภายนอกดังต่อไปนี้เพื่อแชร์ตัวแปรในไฟล์ต่างๆ -
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++); }
คำถามต่อไปนี้ที่ stackoverflow รวบรวมสาระสำคัญของคีย์เวิร์ด extern อย่างสมบูรณ์:https://stackoverflow.com/questions/1433204/how-do-i-use-extern-to-share-variables-between-source-files พี>