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

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'ماکرو'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


آی‌او‌استریم

چیزی برای نمایش وجود ندارد

چیزی برای نمایش وجود ندارد

تالارهای گفتگو

  • انجمن‌های آی او استریم
    • اخبار و اعلامیه‌های سایت
    • اسناد و قوانین مرجع
    • جلسات و دوره‌همی‌های آنلاین
    • پادکست‌های آموزشی
    • معرفی محصولات نوشته شده‌ بومی
    • مرکز نظرسنجی
    • مقالات و اسناد مشاوره‌ای
    • مرکز چالش برانگیز برنامه‌نویسان
    • رمز‌های موفقیت
    • ابزار‌ها و نرم‌افزارهای کاربردی برنامه‌نویسان حرفه‌ای
  • برنامه نویسی در C و ‏++C
    • سوالات عامیانه در رابطه با ++C مدرن
    • کتابخانه‌های استاندارد STL
    • کتابخانه بوست (Boost)
    • کتابخانه کیوت (Qt)
    • کتابخانه‌‌ی SDL
    • کتابخانه‌های گرافیکی Vulkan, OpenGL, Metal, Direct3D
    • کتابخانه‌‌ی OpenCV
    • کتابخانه‌‌ی Cuda
    • کتابخانه‌‌ی OpenMP
    • کتابخانه‌‌ی OpenCL
    • کتابخانه‌های دیگر
    • کامپایلر‌ها
    • کتابخانهٔ SFML
    • ابزار‌ها
  • استارتاپی و کسب‌و‌کار
    • استارتاپ‌ها
    • سرمایه گذاری
    • شتاب دهنده‌ها
    • پارک‌های علم و فناوری و مراکز رشد
    • مصاحبه با استارت‌آپ‌ها
    • قوانین حقوقی
    • داستان‌های موفقیت
    • کارآفرینان و متخصصین
    • مشاوره اجرای کسب‌وکار
    • اخبار حوزه‌ی استارتا‌پی
    • آگهی‌های استخدامی
  • ابزار‌های ساخت و ساز
    • ابزار CMake
    • ابزار QMake
    • ابزار Qbs
    • ابزار Make و Autotools
  • طراحی و توسعه وب
  • طراحی و توسعه وب اپلیکیشن‌ها
    • طراحی و توسعه در Angular
    • طراحی و توسعه در React.JS
    • طراحی و توسعه در Vue.JS
  • طراحی و توسعه موبایل و اِمبِد‌ها و تلوزیون‌ها
    • برنامه نویسی تحت محصولات اپل
    • برنامه نویسی تحت محصولات گوگل
    • طراحی و توسعه تحت محصولات دیگر
  • برنامه‌نویسی سطح پایین و سیستم عامل‌ها
    • سیستم عامل‌های آزاد
    • سیستم عامل‌های تجاری
    • مباحث آموزشی مرتبط با سیستم‌عامل
  • شبکه و اینترنت
    • مباحث و منابع آموزشي
    • سوالات و مشکلات
  • بانک‌های اطلاعاتی
  • برنامه نویسی تحت محصولات اپل
  • برنامه نویسی تحت محصولات مایکروسافت
  • طراحی و توسعه تجربه کاربری (UX) و رابط کاربری (UI)
  • سوالات و مباحث عامیانه
  • سطل آشغال

Product Groups

  • کتاب‌ها و مقالات آموزشی

تقویم ها

دسته ها

  • علمی
  • استارتاپی
  • برنامه‌نویسی
    • زبان‌های برنامه نویسی
    • معماری‌ها
  • کامپایلر و مفسر
  • محیط‌های توسعه
  • طراحی و توسعه‌ی وب
  • مجوز‌های نرم‌افزاری
  • فناوری‌ها
    • پردازش تصویر
    • اینترنت اشیاء
    • پردازش ابری (Cloud Computing)
    • چند سکویی (Cross-Platform)
    • بیگ دیتا (Big Data)
    • هوش مصنوعی (AI)
    • سخت افزار
    • نرم‌افزار و اپلیکیشن
    • اینترنت و شبکه
    • رمزنگاری
    • امبد‌ها (Embedded)
  • طراحی
    • تجربه کاربری
    • رابط کاربری

دسته ها

  • عمومی

دسته ها

  • عمومی
  • گرافیکی
  • شبکه و ارتباطات

دسته ها

  • کامپایلر‌ها
  • محیط‌های توسعه
  • کتابخانه‌ها
  • ماژول‌ها و پلاگین‌ها
  • محصولات بومی
  • کتاب‌ها و مقالات
  • زبان‌ها و ابزار‌ها
  • طراحی و گرافیک

جستجو در ...

نمایش نتایجی که شامل ...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد ...

تاریخ عضویت

  • شروع

    پایان


گروه


درباره من


شماره تلفن همراه


شناسه گیت‌هاب


شناسه لینکدین


شناسه پیام رسان


شهر


آدرس پستی

5 نتیجه پیدا شد

  1. با سلام و وقت بخیر چگونه identifier جدیدی در ++visual studio C تعریف کنیم؟ Error (active) E0020 identifier "mexPrintf" is undefined Error (active) E0020 identifier "vector" is undefined Error (active) E0020 identifier "mxArray" is undefined
  2. معمولاً در سی‌پلاس‌پلاس برای چاپ اطلاعات مربوط به کد منبع از ماکرو‌ها استفاده می‌شود. ماکروها به عنوان یکی از ویژگی‌های بسیار قدرتمند زبان 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! منبع در مرجع سی‌پلاس‌پلاس
  3. کامبیز اسدزاده

    سلام، مدتی بود که نسخهٔ ۲۰۱۷ کامپایلر MSVC با مشکل عدم بازگشت مقدار صحیح از نسخهٔ استاندارد زبان مواجه بود. هرچند توسط توسعه دهندگان این مشکل به مایکروسافت گزارش داده شده بود اما ظاهراً مشکل همچنان پا برجاست. و اما مشکل، کد زیر را با کامپایلر MSVC2017 اجرا کنید: #include <iostream> int main() { std::cout << __cplusplus << std::endl; std::cin.get(); return 0; } اگر دقت کنید مقدار بازگشتی این کد 199711خواهد بود. در حالی که باید مقدار بازگشتی آن با توجه به استاندارد زبان باید یکی از دو مقدار 201402L یا 201403 باشد. برای حل این مورد من پچی را فراهم کردم که می‌تونید این مشکل رو حل کنید. علاوه بر این یک سری ماکرو نویسی جزئی انجام شده که با دقت بیشتر و مقدار بازگشتی از نام خود کامپایلر را برای شما ارائه دهد. طبق اصلاحیه کد دستوری آن به صورت زیر خواهد که تکه‌ای از کد‌های یکی از پروژه‌های من به نام Genesis بود که حالا اینجا به اشتراک گذاشتمش: #include <iostream> using namespace std; #include "macro.h" int main() { Macro mc; cout << "Hello World!" << endl; cout << "C++ Standard Version (MSVC) : " << __cplusplus << endl; cout << "C++ Standard Version (with bug fix in MSVC : " << __GENESIS_CPP_VALUE__ << endl; cout << "C++ Standard Version (with bug fix in MSVC using function: " << mc.get__cplusplus(false) << endl; cout << "Compiler name using flag true: " << mc.get__cplusplus(true) << endl; return 0; } خروجی: Hello World! C++ Standard Version (MSVC) : 199711 C++ Standard Version (with bug fix in MSVC : 201703 C++ Standard Version (with bug fix in MSVC using function: 201703 Compiler name using flag true: MSVC++ برای دریافت این اصلاحیه به مخزن آن مراجعه نمایید.
  4. کامبیز اسدزاده

    تعریف ماکرو یک ماکرو به عنوان یک قطعه کدی (رشته‌ای) است که به آن نام مشخصی داده شده است. قطعه کد مربوطه می‌تواند شامل رشته، عدد، شیء، تابع و دیگر موارد باشد. زمانی که از این نام استفاده شود آن را با محتوای موجود در ماکرو جایگزین می‌کند. به طور کلی دو نوع ماکرو وجود دارد Object-Like (شیء مانند) برای استفاده در زمانی که محتوا شامل اشیاء باشد و ‌Function-Like (تابع مانند) نیز زمانی مورد استفاده قرار می‌گیرد که شامل تابع می‌باشد. /* object-like macro */ #define <identifier> <replacement token list> /* function-like macro, note parameters */ #define <identifier>(<parameter list>) <replacement token list> نکته: ایجاد یک ماکروی سفارشی توسط دستور #define انجام می‌شود. /* create the macro */ #define <identifier> نکته: ماکرو‌های ایجاد شده توسط دستور #undef می‌توانند حذف شوند. /* delete the macro */ #undef <identifier> نکته: ماکرو‌ها علاوه بر اینکه می‌توانند توسط کاربر (توسعه‌دهنده) سفارشی ساخته شوند، همچنین از قبل به صورت از پیش تعریف شده برای انواع سیستم‌عامل‌ها، معماری‌ها و دیگر منظور‌ها ساخته شده اند که تحت استاندارد‌های کامپایلر‌ها متفاوت عمل می‌کنند. ماکرو‌ از نوع شیء (Object-Like) یک ماکرو از نوع شیء شناسه‌ی ساده‌ای است که با یک قطعه کد جایگزین می‌شود. آن را شیء مانند می‌نامند زیرا، به نظر می‌رسد یک شیء از نوع داده در آن مورد استفاده قرار می‌گیرد. معمولاً آن‌ها از نام‌های نمادین برای ثابت‌های عددی استفاده می‌شود. #define BUFFER_SIZE 1024 در کد فوق ماکروی BUFFER_SIZE دستور #define را دنبال می‌کند و مقدار ۱۰۲۴ را به عنوان مقدار آن در نظر می‌گیرد. در مثال زیر می‌توانید نحوه‌ی استفاده از یک ماکروی سفارشی از نوع شیء (Object-Like) را مشاهده کنید. #include <iostream> using namespace std; #define BUFFER_SIZE 1024 int main() { cout << "Buffer Size is : " << BUFFER_SIZE << endl; return 0; } ماکرو‌ از نوع تابع (Function-Like) همچنین شما می‌توانید از ماکرو‌ها مانند صدا زدن یک تابع استفاده کنید. این نوع ماکرو‌ها Function-Like هستند. برای تعریف این نوع شما باید از دستور پیش‌پردازنده‌ی #define استفاده کرده و دو پرانتز ر بلافاصله پس از نام ماکرو قرار دهید. در مثال زیر ماکرویی با نام Maximum را برای محاسبه‌ی بزرگترین عدد ورودی پیاده سازی کرده‌ایم. #include <iostream> using namespace std; #define Maximum( a, b ) a > b ? a : b int main() { int x = 4; int y = 9; int z = Maximum( x, y ); cout << "Result : " << z << endl; return 0; } نسخه‌ی معمولی آن می‌تواند به شکل زیر باشد. #include <iostream> using namespace std; int Maximum (int a, int b) { if (a > b) return a; else return b; } int main() { int x = 4; int y = 9; int z = Maximum( x, y ); cout << "Result : " << z << endl; return 0; } بعضی از موارد در حوزه‌ی سفارشی سازی ماکرو‌ها می‌تواند به صورت سلیقه‌ای و نسبت به نوع پروژه تعریف شوند. برای مثال قرار است در برنامه‌ای نوع اولویت اشکال‌زدائی را مشخص کنیم. #include <iostream> using namespace std; #define DEBUG # if defined (DEBUG) # define DEBUG_LEVEL 5 #endif # if DEBUG_LEVEL < 3 # define DLEVEL "Low Level" # elif DEBUG_LEVEL > 3 # define DLEVEL "High level" #endif int main() { cout << "Debug level is : " << DLEVEL; return 0; } در کد بالا توسط پیش پردزنده‌ی #define و پیش پردازنده‌‌های شرطی #if و #elif و #endif حالتی را ایجاد کرده‌ایم که با مشخص سازی درجه‌ی مشخصه DEBUG_LEVEL نتیجه‌ی آن اعلام خواهد شد. ماکرو‌های از پیش تعریف شده بسیاری از ماکرو‌های از پیش تعریف شده توسط کامپایلر‌ها و شرکت‌های سازنده وجود دارد که در توسعه بسیار مفید و کاربردی هستند. برای مثال اگر نیاز باشد کد شما بر اساس نوع پلتفرمی که بر روی آن اجرا می‌شود واکنش متفاوتی را انجام دهد نیاز خواهد بود تا از چنین ماکرو‌های پرکاربری استفاده کنید. مثال‌های زیر برخی از ماکرو‌های از پیش تعریف شده بر اساس استاندارد ISO را معرفی می‌کند. استاندارد‌های زبان نوع : __STDC__ تعریف شده برای استاندارد‌های ANSI X3.159-1989 | ISO/IEC 9899:1990 نوع : __STDC_VERSION__ تعریف شده C برای استاندارد‌های ISO/IEC 9899-1:1994 | ISO/IEC 9899:1999 | ISO/IEC 9899:2011 نوع : __cplusplus تعریف شده ++C برای استاندارد‌های ISO/IEC 14882:1998 | ISO/IEC 14882:2011 | ISO/IEC 14882:2017 | ISO/IEC 14882:2014 نوع : __cplusplus_cli تعریف شده برای ECMA-372 نوع : __embedded_cplusplus تعریف شده برای پلتفرم‌های امبد در Embedded C++ یک مثال از کاربرد استاندارد‌های C تحت ماکرو‌های از پیش تعریف شده: #if defined(__STDC__) # define PREDEF_STANDARD_C_1989 # if defined(__STDC_VERSION__) # if (__STDC_VERSION__ >= 199409L) # define PREDEF_STANDARD_C_1994 # endif # if (__STDC_VERSION__ >= 199901L) # define PREDEF_STANDARD_C_1999 # endif # endif #endif مثال‌های زیر برخی از ماکرو‌های از پیش تعریف شده در پلتفرم‌های مختلف را معرفی می‌کند. پلتفرم ویندوز‌ دسکتاپ (Windows) نوع : _WIN16 تعریف شده برای پلتفرم‌های ۱۶ بیتی نوع : _WIN32 تعریف شده برای پلتفرم‌های ۳۲ بیتی نوع : _WIN64 تعریف شده برای پلتفرم‌های ۶۴ بیتی نوع : __WIN32__ تعریف شده برای پلتفرم‌های ۳۲ بیتی توسط کامپایلر‌های Borland C++ نوع : __TOS_WIN__ تعریف شده برای پلتفرم‌های ویندوز توسط xlC نوع : __WINDOWS__ تعریف شده برای پلتفرم‌های ویندوز توسط Watcom C/C++ پلتفرم ویندوز‌ اِمبِد (Windows CE) نوع : _WIN32_WCE تعریف شده برای پلتفرم‌‌های ویندوز ۳۲ بیتی در اِِمبِد نوع : WIN32_PLATFORM_ تعریف شده توسط Embedded Visual Studio C++ پلتفرم یونیکس مکینتاش (Unix macOS) نوع : macintosh تعریف شده نسخه‌های macOS نوع : Macintosh تعریف شده برای نسخه‌های macOS نوع : __APPLE__ تعریف شده برای Mac OS X توسط GNU C and Intel C++ نوع : __MACH__ تعریف شده برای Mac OS X توسط GNU C and Intel C++ پلتفرم لینوکس - کرنل (Linux Kernel) نوع : __linux__ تعریف شده برای کرنل لینوکس نوع : linux تعریف شده برای کرنل لینوکس - منسوخ شده (سازگار نیست با POSIX) نوع : __linux تعریف شده برای کرنل لینوکس - منسوخ شده (سازگار نیست با POSIX) پلتفرم اندروید (Android) نوع : __ANDROID__ تعریف شده برای اندروید پلتفرم یونیکس بی‌اِ‌س‌دی (Unix BSD) نوع : __FreeBSD__ تعریف شده برای FreeBSD نوع : __NetBSD__ تعریف شده برای NetBSD نوع : __OpenBSD__ تعریف شده برای OpenBSD نوع : __bsdi__ تعریف شده برای BSDI نوع : __DragonFly__ تعریف شده برای Dragon Fly پلتفرم کیو‌اِن‌ایکس (QNX) نوع : __QNX__ تعریف شده برای نسخه‌های QNX 4.x نوع : __QNXNTO__ تعریف شده برای نسخه‌های QNX 4.x نکته : این مقاله ادامه دارد...
  5. GornerLabo

    ماکرو در فناوری Qt Quick به چه معناست و چه کاربردی دارد؟
×
×
  • جدید...