Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में ग्लोबल वेरिएबल कैसे घोषित करें


C++ में ग्लोबल वेरिएबल्स घोषित करने के लिए, हम प्रोग्राम की शुरुआत के बाद वेरिएबल्स घोषित कर सकते हैं। किसी फ़ंक्शन या ब्लॉक के अंदर नहीं। यदि हम कुछ वेरिएबल्स घोषित करना चाहते हैं जो किसी अन्य फ़ाइल में संग्रहीत होंगे, तो हम एक फ़ाइल बना सकते हैं और उसमें कुछ वेरिएबल स्टोर कर सकते हैं। किसी बाहरी फ़ाइल के लिए कभी-कभी हमें इसके साथ extern कीवर्ड लगाना पड़ता है। साथ ही हमें बाहरी फ़ाइल को वास्तविक प्रोग्राम फ़ाइल के साथ शामिल करना होगा।

उदाहरण: ग्लोबल वेरिएबल फ़ाइल (global.cpp)

// global.cpp
int x = 10;
int y = 20;

नोट: extern कीवर्ड का उपयोग घोषणा (declaration) में किया जाता है, परिभाषा (definition) में नहीं। परिभाषा फ़ाइल में केवल परिभाषा होनी चाहिए।

उदाहरण: मुख्य फ़ाइल (main.cpp)

// main.cpp
#include <iostream>
// #include "global.cpp" // गलत: .cpp फ़ाइल शामिल न करें!
// इसके बजाय, हेडर फ़ाइल में extern घोषणा करें

// global.h
#ifndef GLOBAL_H
#define GLOBAL_H
extern int x; // घोषणा: परिभाषा कहीं और है
extern int y;
#endif

// main.cpp में:
#include "global.h"
using namespace std;

int main() {
    cout << x << endl;
    cout << y << endl;
    return 0;
}

कंपाइल और रन

$ g++ global.cpp main.cpp -o global_demo
$ ./global_demo
10
20

मुख्य अवधारणाएं

1. ग्लोबल वेरिएबल परिभाषा vs घोषणा

पहलूपरिभाषा (Definition)घोषणा (Declaration)
कीवर्डकोई नहीं (सिर्फ टाइप नाम)extern
मेमोरी आवंटनहांनहीं
इनिशियलाइज़ेशनअनुमतअनुमत नहीं (C++17 से inline वेरिएबल्स में अनुमत)
स्थानएक .cpp फ़ाइल मेंहेडर फ़ाइल में (.h)
बहुगुणताप्रोग्राम में ठीक एककई फ़ाइलों में शामिल हो सकता है

2. इंटरनल लिंकेज (फाइल-लोकल ग्लोबल)

// file.cpp
static int file_local = 42; // केवल इस फाइल में दृश्यमान
// या C++17+
namespace {
    int file_local = 42; // अनाम नेमस्पेस (पसंदीदा)
}

3. C++17 इंलाइन वेरिएबल्स (हेडर-ओनली ग्लोबल्स)

// global.hpp
#pragma once
inline int global_counter = 0; // परिभाषा + घोषणा एक साथ
// एकाधिक .cpp फ़ाइलें इसे शामिल कर सकती हैं - लिंकर इसे मर्ज कर देगा

सर्वोत्तम अभ्यास

  • ग्लोबल वेरिएबल्स से बचें - वे कपलिंग बढ़ाते हैं और टेस्टिंग कठिन बनाते हैं।
  • सिंगलटन/कॉन्फिग ऑब्जेक्ट्स का उपयोग करें यदि साझा स्थिति आवश्यक है।
  • extern का उपयोग करके घोषणा और परिभाषा अलग करें।
  • थ्रेड सेफ्टी पर विचार करें - ग्लोबल्स पर सिंक्रोनाइज़ेशन की आवश्यकता होती है।
  • const ग्लोबल्स डिफ़ॉल्ट रूप से इंटरनल लिंकेज रखते हैं (C++ में), extern const का उपयोग करके एक्सटर्नल लिंकेज बनाएं।
  1. एंड्रॉइड में ग्लोबल वेरिएबल कैसे घोषित करें? एंड्रॉइड में ग्लोबल वेरिएबल कैसे घोषित करें?

    एंड्रॉइड में ग्लोबल/शेयर्ड स्टेट प्रबंधित करना ग्लोबल वेरिएबल एंड्रॉइड में मौजूद नहीं हैं जैसे वे C/C++ में होते हैं। इसके बजाय, हम दायरे और जीवनचक्र के आधार पर कई पैटर्न का उपयोग करते हैं: Application उपवर्ग, सिंगलटन, ViewModel, SharedPreferences, या डिपेंडेंसी इंजेक्शन (Hilt/Koin)। पैटर्न 1 - App

  1. Android में ग्लोबल वेरिएबल कैसे घोषित करें? Android में ग्लोबल वेरिएबल कैसे घोषित करें?

    सिंगलटन पैटर्न से ग्लोबल वेरिएबल Android में ग्लोबल वेरिएबल के लिए सिंगलटन क्लास पैटर्न का उपयोग करना सर्वोत्तम अभ्यास है। यह उदाहरण दर्शाता है कि एक सिंगलटन क्लास बनाकर पूरे ऐप में डेटा कैसे साझा करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट (activity_

  1. C++ में new का उपयोग करके 2D ऐरे कैसे घोषित करें C++ में new का उपयोग करके 2D ऐरे कैसे घोषित करें

    एक डायनामिक 2D ऐरे मूल रूप से ऐरे के पॉइंटर्स का ऐरे होता है। यहां 3 x 4 आयाम वाले 2D ऐरे का एक आरेख है। एल्गोरिदम Begin ऐरे के आयाम घोषित करें। new का उपयोग करके 2D ऐरे a[][] को डायनामिक रूप से आवंटित करें। ऐरे को तत्वों से भरें। ऐरे प्रिंट करें। इसे हटाकर मेमोरी साफ़ करें। End