এক্সটার্ন স্টোরেজ ক্লাস স্পেসিফায়ার আপনাকে এমন অবজেক্ট ঘোষণা করতে দেয় যা বিভিন্ন সোর্স ফাইল ব্যবহার করতে পারে। একটি বহিরাগত ঘোষণা বর্তমান উৎস ফাইলের পরবর্তী অংশ দ্বারা বর্ণিত পরিবর্তনশীলকে ব্যবহারযোগ্য করে তোলে। এই ঘোষণা সংজ্ঞা প্রতিস্থাপন করে না. ঘোষণাটি বাহ্যিকভাবে সংজ্ঞায়িত পরিবর্তনশীলকে বর্ণনা করতে ব্যবহৃত হয়।
একটি বহিরাগত ঘোষণা একটি ফাংশনের বাইরে বা একটি ব্লকের শুরুতে প্রদর্শিত হতে পারে৷ যদি ঘোষণাটি একটি ফাংশনকে বর্ণনা করে বা একটি ফাংশনের বাইরে উপস্থিত হয় এবং বহিরাগত সংযোগ সহ একটি বস্তুর বর্ণনা দেয়, তাহলে বহিঃশব্দটি ঐচ্ছিক৷
যদি একটি শনাক্তকারীর জন্য একটি ঘোষণা আগে থেকেই ফাইলের সুযোগে বিদ্যমান থাকে, তাহলে একটি ব্লকের মধ্যে পাওয়া একই শনাক্তকারীর যে কোনো বহিরাগত ঘোষণা একই বস্তুকে বোঝায়। ফাইল স্কোপে শনাক্তকারীর জন্য অন্য কোনো ঘোষণা না থাকলে, শনাক্তকারীর বাহ্যিক সংযোগ আছে।
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++); }
স্ট্যাকওভারফ্লোতে নিম্নলিখিত প্রশ্নটি সম্পূর্ণরূপে বহিরাগত কীওয়ার্ডের সারমর্মকে ক্যাপচার করে:https://stackoverflow.com/questions/1433204/how-do-i-use-extern-to-share-variables-between-source-files।পি>