1.8 —
Multiple files के साथ
programs
जैसे-जैसे programs बड़े होते जाते हैं, उन्हें एक से ज्यादा files में बाँट दिया जाता है ताकि codes अच्छी तरह से व्यवस्थित हों ।
IDE में काम करने का एक और फायदा ये भी है की वे एक से ज्यादा files के साथ काम करना आसान बना
देते हैं । आप पहले से ही जानते हो की single file projects कैसे बनाते हैं । Project
में नए
files जोड़ना भी बहुत आसान है ।
Visual Studio के project
में नए
files जोड़ना
Visual Studio 2005 Express में,
Solution explorer window के बायीं ओर “Source Files” पर right
click कर Add
-> New Item select कर ले । ध्यान दें की “C++ File (.cpp)” पहले से select किया हुआ है । File को एक नाम दे, और बस, ये आपके project
में add हो गया ।
Note: यदि आप project के Solution
Explorer के
बजाय file menu से नए files जोड़ते हैं, तो आपका file
project में
अपने आप add नहीं होगा । आपको ये काम अलग से करना होगा । इसे करने के लिए,
Solution Explorer में जाकर “Source Files” पर right
click करें, यहाँ Add
-> Existing Item चुनकर अपने files select कर ले ।
जब आप अपने program को compile
करोगे, आपका नया file अपने आप include
हो
जायेगा, क्यूंकि अब ये आपके project का हिस्सा है ।
Adding Code::Blocks के projects
में files जोड़ना
Code::Blocks में, file menu में जाकर “new
file” चुन ले
। नए file को एक नाम दे (यहाँ .cpp extension को ना भूलें),और Code::Blocks
आपसे
पूछेगा की अभी जोड़े गए file को active
project, जिसपे
आप अभी काम कर रहे हो, में जोड़ना है या नहीं । यहाँ
“Yes” पे click करें । ध्यान दे की इसके बाद
आपको “Release” और “Debug” checkboxes पे भी click करना होगा, जिससे IDE को पता चल सके की file को दोनों versions
में add करना है ।
यदि Code::Blocks आपसे file को project
में
जोड़ना है या नहीं, ये नहीं पूछ रहा, या फिर project
pane में
नया file नहीं दिख रहा, तो आपको इसे project
में manually
जोड़ना
होगा । ऐसा करने के लिए, project pane में project
के नाम
पर right click करें, यहाँ “Add
File” को चुन
ले, आपने जो file बनाया है उसे locate करें और इसके बाद इसे project
में
जोड़ ले ।
अब जब आप program को compile
करोगे, नया file अपने आप include
हो
जाना चाहिए क्यूंकि अब ये active project का हिस्सा बन चूका है ।
यदि file Code::Blocks में compile या link नहीं हो रहा, तो एक बार check कर ले की file
compile और link होने के लिए set किया गया है या नही । इसके
लिए, project pane पर file के नाम पर click करें, और यहाँ से “Properties”
चुन ले
। अब “General” tab में, आपको कुछ checkboxes
नज़र
आने चाहिए जो file के compile या link होने को control
करते हैं
। यदि ये checked नही हैं, तो इनपर click कर इन्हें check कर ले ।
Command line से project
में नए
files जोड़ना
Command line में, आप अपने favorite
editor का
इस्तेमाल करते हुए project में नए files जोड़कर इन्हें नाम दे सकते
हैं। जब आप अपने program को compile करोगे, आपको बनाये गए सभी नए files को command
line पर include
करना
होगा । उदाहरण के तौर पर: “g++ main.cpp add.cpp -o main”,
जहाँ main.cpp
और add.cpp
आपके code
files के नाम
हैं, और main, generate किये गए output file का नाम है ।
एक से अधिक files के साथ program
नीचे दिए गए multiple-file program (एक से अधिक file वाला program)
पर
नज़र डालें:
add.cpp:
|
1
2
3
4
5
6
|
//#include "stdafx.h" // Visual Studio में इसे uncomment कर
लें
int add(int x, int y)
{
return x + y;
}
|
main.cpp:
|
1
2
3
4
5
6
7
8
9
|
//#include "stdafx.h" // Visual Studio में इसे uncomment कर
लें
#include <iostream>
int main()
{
using namespace std;
cout << "The sum of 3 and 4 is: " << add(3, 4) << endl;
return 0;
}
|
इस program को compile करने की कोशिश करें । आप
देखोगे की ये compile नहीं हो रहा, और ये बिलकुल वैसा ही error दे रहा है जैसा की पिछले lesson में functions
को गलत
क्रम में सजाने से मिला था:
add.cpp(10) : error C3861: 'add': identifier not found
add.cpp(15) : error C2365: 'add' : redefinition; previous definition was 'formerly unknown identifier'
जब compiler किसी code file को compile
करता
है, इसे दुसरे files में define किये गए functions
के
बारे में पता नहीं होता । ये खूबी असल में ज़रूरी है ताकि दुसरे file का कोई भी नाम इस file के किसी नाम से match होकर naming
collision ना दे
बैठे ।
फिर भी, यहाँ पे हम चाहते हैं की main.cpp,
add.cpp को
खोजकर इसके function add का इस्तेमाल कर सके । main.cpp को add
function पर access दिलाने के लिए, हम एक forward
declaration का इस्तेमाल कर सकते हैं:
main.cpp, forward declaration के साथ:
|
1
2
3
4
5
6
7
8
9
10
11
|
//#include "stdafx.h" // Visual Studio में इसे uncomment कर
ले
#include <iostream>
int add(int x, int y); // ज़रूरी
है ताकि main.cpp को add() के declare होने का पता चल सके
int main()
{
using namespace std;
cout << "The sum of 3 and 4 is: " << add(3, 4) << endl;
return 0;
}
|
अब जब compiler main.cpp को compile
करेगा, इसे add() के बारे में पता होगा । इस
तरीके का प्रयोग कर, हम files को दुसरे files में रहने वाले functions
पर access दिला सकते हैं ।
अब forward declaration के साथ add.cpp और main.cpp
को compile
करने
की कोशिश करें । यदि आपको कोई linker error मिलता है, तो एक बार check कर ले की आपने add.cpp
को
अपने project या compile line में सही तरीके से जोड़ा है या
नहीं ।
कुछ गलत हो रहा है!
पहली बार multiple-files का इस्तेमाल करते वक़्त आपसे
गलतियाँ हो सकती है । यदि आपने ऊपर का तरीका अपनाया और आपको कोई error मिला है, तो इन सभी चीजों को check कर ले:
1. यदि आपको add() के main() में ना define होने का compiler
error मिला
है, तो शायद आप add() को forward
declare करना
भूल गये हो ।
2. यदि आपको कुछ इस तरह से add() के define न होने का linker
error मिलता
है,
unresolved external symbol "int __cdecl add(int,int)" (?add@@YAHHH@Z) referenced in function _main
2a. …तो इसका सबसे ज्यादा संभावित कारण है की add.cpp
को
आपने project में सही तरीके से नही जोड़ा है । यदि आप Visual
Studio या फिर
Code::Blocks का इस्तेमाल कर रहे हो, तो आपको IDE की बायीं ओर Solution
Explorer/project pane में add.cpp नज़र आना चाहिए । यदि ऐसा
नहीं है, तो project पर right click कीजिये, अपने file को फिर से add कीजिये और दोबारा compile
कीजिये
। यदि आप command line पर compile कर रहे हो, तो main.cpp
और add.cpp,
दोनों files को compile
command में
जोडना ना भूले ।
2b. …ये भी हो सकता है की आपने add.cpp
को गलत
project में जोड़ लिया है ।
2c. …ये भी संभव है की file compile या link होने के लिए set नहीं किया गया है । File
properties को एक बार check कर ले और देखे की file
compile/link होने के लिए अच्छी तरह से set किया गया है । Code::Blocks
में,
compile और link दो अलग checkboxes
है
जिनमे दोनों checked होने चाहिए । Visual Studio में,
“exclude from build” का एक option होगा जो no पे set होना चाहिए या blank होना चाहिए ।
3. यदि आप precompiled headers के साथ Visual
Studio का
प्रयोग कर रहे हैं, तो सभी code
files में #include
“stdafx.h” होना चाहिए । ये main.cpp और add.cpp
दोनों
को include करता है ।
4. add.cpp को main.cpp से #include बिलकुल
ना करें । ऐसा करने से compiler add.cpp को अलग file समझने के बजाय दोनों को एक ही
file की तरह treat करेगा । हो सकता है की इस
छोटे से program में ये तरीका काम कर जाये, पर आगे चलकर ये आपके लिए
मुश्किलें पैदा कर सकता है ।
निष्कर्ष
Object-oriented programming section में पहुँचते ही हम multiple-files
का
इस्तेमाल करना शुरू कर देंगे, तो यही सबसे अच्छा समय है की
आप multiple files को project में जोड़ना बिलकुल अच्छी तरह
से समझ ले, अन्यथा आपको आगे दिक्कत हो सकती है ।
फिर से याद दिलाने के लिए: जब भी आप कोई नया code
(.cpp) file बनाते हो, आपको इसे आपके project
में
जोड़ना होगा ताकि ये compile हो सके

No comments:
Post a Comment