تفاوت #include و using namespace در C++ چیست؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تفاوت #include و using namespace در C++ چیست؟

+1 امتیاز
سلام دوستان. سوال در عنوان پرسیده شده. همچنین آیا در C++ فقط یک namespace  و آن هم با نام std وجود دارد یا اینکه تعداد دیگری هم فضای نام وجود دارد؟ ممنون
سوال شده مرداد 13, 1393  بوسیله ی Pashmak (امتیاز 644)   8 15 31
ویرایش شده مرداد 13, 1393 بوسیله ی Pashmak

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام دوست عزیز!

using namespace برای این هست که شما اذیت نشی!

در واقع اگه using namespace std رو استفاده نکنی باید به جای cout بنویسی std::cout، به جای cin بنویسی std::cin و ...

اما با استفاده از using namespace می تونی کد کوتاه تری بنویسی...

ضمنا غیر از std فضای نام های دیگه ای هم هست که بستگی به برنامه ات داره که می خوای استفاده کنی یا نه...

مثال: using namespace cv برای OpenCV...

اما include ماجراش فرق می کنه و یه چیز دیگه ایه و برای استفاده از header file ها هست که توابع و کدهای مورد نیازت توشون معرفی شده...

 

ویرایش:

 

آیا می توان کدهای نوشته شده داخل namespace ها رو مشاهده کرد یا نه؟

 

اگه می خواید بفهمید چه چیزایی به اون namespace مربوط می شه بله...

می تونید محتوای header file مربوطه رو مشاهده کنید...

مثلا در Code::Blocks می تونید روی نام header file راست کلیک کنید و ... Open #include file رو بزنید...

مثلا برای iostream (با حذف comment ها و ... برای خلاصه شدن):

#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>

namespace std {
  extern istream cin;
  extern ostream cout;
  extern ostream cerr;
  extern ostream clog;
  extern wistream wcin;
  extern wostream wcout;
  extern wostream wcerr;
  extern wostream wclog;
}

 

پاسخ داده شده مرداد 13, 1393 بوسیله ی مسعود لپه‌چی (امتیاز 928)   11 31 50
انتخاب شد مرداد 16, 1393 بوسیله ی Pashmak
سلام. بابت جوابتون ممنون. یک سوال دیگه اینکه آیا می توان کدهای نوشته شده داخل namespace ها رو مشاهده کرد یا نه؟
بابت جوابتون ممنون. یک مشکلی که وجود داره من با visual stdio کد رو مینوسم و محتوای هدرهای include را با راست کلیک بر روی خط آن و انتخاب گزینه open document تونستم ببینم اما namespace نشد. میشه اگه میشه واسه فضای نام یکم بهتر بگید؟
سلام دوست عزیز!
همین کاری که کردید درسته، برای namespace ها نمی شه، برای namespace ها رو باید داخل خود header file مربوطه ببینید... مثلا برای std رو از iostream آوردم...
...