رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

امتیاز دادن به این موضوع:

پست های پیشنهاد شده

معمولاً در سی‌پلاس‌پلاس برای چاپ اطلاعات مربوط به کد منبع از ماکرو‌ها استفاده می‌شود. ماکروها به عنوان یکی از ویژگی‌های بسیار قدرتمند زبان C محسوب می‌شوند که در C++ نیز از آن‌ها پشتیبانی می‌شود. برای مثال ماکرو‌های __LINE__ و __FILE__ اطلاعات مربوط به شماره خط، فایل و نام آن را بر می‌گردانند.

در استاندارد جدید یعنی 2a یا همان نسخهٔ ۲۰ زبان، کلاس source_location معرفی شده است که در فایل سرآیند <source_location> تعبیه شده است. با دسترسی به فیلد‌های line، column، filename و function_name می‌توان تحت این کلاس مشخصات مورد نیاز را از کد منبع چاپ کرد.

مثال :

#include <iostream>
#include <string_view>
#include <source_location>
 
void log(std::string_view message,
         const std::source_location& location = std::source_location::current())
{
    std::cout << "info:"
              << location.file_name() << ":"
              << location.line() << " "
              << message << '\n';
}
 
int main()
{
    log("Hello world!");
}

خروجی کد مربوطه به صورت زیر است.

info:main.cpp:15 Hello world!

منبع در مرجع سی‌پلاس‌پلاس

  • پسندیدن 1
  • تشکر شده 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 25 شهریور 1398 در 08:47، فرهاد شیری گفته است :

استانداردهای پایینتر هم بود

درود؛

درمورد نحوهٔ کار استاندارد‌ها نمی‌دانم ولی توی استاندارد توضیحی درمورد اینکه چطوری پیاده‌سازی بشه نداده، این مورد ظاهراً به‌عهدهٔ کامپایلره. مثلاً در پیاده‌سازی‌ای که GCC از N4806 کرده (فعلاً Clang هیچ پیاده‌سازی‌ای نداره) از توابع داخلی خود کامپایلر استفاده کرده :

[آدرس فایل در مخزن گیت]


    // 14.1.2, source_location creation
    static constexpr source_location
    current(const char* __file = __builtin_FILE(),
	    const char* __func = __builtin_FUNCTION(),
	    int __line = __builtin_LINE(),
	    int __col = 0) noexcept
    {
      source_location __loc;
      __loc._M_file = __file;
      __loc._M_func = __func;
      __loc._M_line = __line;
      __loc._M_col = __col;
      return __loc;
    }

پیاده‌سازیه توابع داخلی (پیوند).

 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • جدید...