-
فرشید پوشنده
1405/05/24
-
24 مرداد 1405
بازگشت به: آموزش برنامه نویسی c++ سی پلاس پلاس
۰.۱۳ — کامپایلر من از چه استاندارد زبانی استفاده میکند؟
برنامه زیر برای چاپ نام استاندارد زبانی که کامپایلر شما در حال حاضر از آن استفاده میکند، طراحی شده است. میتوانید این برنامه را کپی/پیست کرده، کامپایل و اجرا کنید تا تأیید کنید که کامپایلر شما از استاندارد زبانی که انتظار دارید استفاده میکند.
اگر می خوای حرفه ای برنامه نویسی یاد بگیری!
آموزش برنامه نویسی c++
«++C یکی از قدرتمندترین زبانهای برنامهنویسی دنیاست که هم سرعت و کارایی زبان C را دارد و هم امکانات پیشرفتهی شیگرایی را در اختیار میگذارد. با ++C میتوان از ساخت سیستمعاملها و نرمافزارهای سیستمی گرفته تا طراحی بازیهای سهبعدی و پروژههای پیچیدهی صنعتی را انجام داد. یادگیری این زبان مثل داشتن کلید ورود به دنیای عمیقتر کامپیوتر است؛ جایی که میتوانی کنترل کامل روی حافظه، پردازش و ساختار برنامه داشته باشی و ایدههایت را با نهایت قدرت و سرعت به واقعیت تبدیل کنی.»
فایل PrintStandard.cpp:
1 // This program prints the C++ language standard your compiler is currently using
2 // Freely redistributable, courtesy of learncpp.com (https://www.learncpp.com/cpp-tutorial/what-language-standard-is-my-compiler-using/)
3
4 #include <iostream>
5
6 const int numStandards = 7;
7 // The C++26 stdCode is a placeholder since the exact code won't be determined until the standard is finalized
8 const long stdCode[numStandards] = { 199711L, 201103L, 201402L, 201703L, 202002L, 202302L, 202612L};
9 const char* stdName[numStandards] = { "Pre-C++11", "C++11", "C++14", "C++17", "C++20", "C++23", "C++26" };
10
11 long getCPPStandard()
12 {
13 // Visual Studio is non-conforming in support for __cplusplus (unless you set a specific compiler flag, which you probably haven't)
14 // In Visual Studio 2015 or newer we can use _MSVC_LANG instead
15 // See https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
16 #if defined (_MSVC_LANG)
17 return _MSVC_LANG;
18 #elif defined (_MSC_VER)
19 // If we're using an older version of Visual Studio, bail out
20 return -1;
21 #else
22 // __cplusplus is the intended way to query the language standard code (as defined by the language standards)
23 return __cplusplus;
24 #endif
25 }
26
27 int main()
28 {
29 long standard = getCPPStandard();
30
31 if (standard == -1)
32 {
33 std::cout << "Error: Unable to determine your language standard. Sorry.\n";
34 return 0;
35 }
36
37 for (int i = 0; i < numStandards; ++i)
38 {
39 // If the reported version is one of the finalized standard codes
40 // then we know exactly what version the compiler is running
41 if (standard == stdCode[i])
42 {
43 std::cout << "Your compiler is using " << stdName[i]
44 << " (language standard code " << standard << "L)\n";
45 break;
46 }
47
48 // If the reported version is between two finalized standard codes,
49 // this must be a preview / experimental support for the next upcoming version.
50 if (standard < stdCode[i])
51 {
52 std::cout << "Your compiler is using a preview/pre-release of " << stdName[i]
53 << " (language standard code " << standard << "L)\n";
54 break;
55 }
56 }
57
58 return 0;
59 }
مشکلات ساخت (Build) یا زمان اجرا (Runtime)
اگر هنگام تلاش برای ساخت این برنامه با خطایی مواجه شدید، ممکن است پروژه خود را به درستی تنظیم نکرده باشید. برای راهنمایی در مورد برخی مشکلات رایج، به بخش ۰.۸ — چند مشکل رایج در C++ مراجعه کنید. اگر آن کمکی نکرد، درسهای از ۰.۶ — نصب محیط توسعه یکپارچه (IDE) را مرور کنید.
اگر برنامه عبارت “Error: Unable to determine your language standard” (خطا: قادر به تشخیص استاندارد زبان شما نیستیم) را چاپ کرد، ممکن است کامپایلر شما غیرهمسو (Non-Conforming) باشد. اگر از یک کامپایلر محبوب استفاده میکنید و اینطور است، لطفاً یک نظر در زیر با اطلاعات مرتبط (مانند نام و نسخه کامپایلر خود) بگذارید.
اگر این برنامه یک استاندارد زبان متفاوت از آنچه انتظار داشتید را چاپ کرد:
تنظیمات IDE خود را بررسی کنید تا مطمئن شوید کامپایلر شما برای استفاده از استاندارد زبانی که انتظار دارید، پیکربندی شده است. برای اطلاعات بیشتر در مورد نحوه انجام این کار برای برخی از کامپایلرهای اصلی، به ۰.۱۲ — پیکربندی کامپایلر: انتخاب استاندارد زبان مراجعه کنید. مطمئن شوید که هیچ اشتباه تایپی یا خطای قالببندی وجود ندارد. برخی کامپایلرها نیاز به تنظیم استاندارد زبان برای هر پروژه بهجای تنظیم سراسری دارند، بنابراین اگر تازه یک پروژه جدید ایجاد کردهاید، ممکن است اینطور باشد.
ممکن است IDE یا کامپایلر شما حتی فایل پیکربندی که در حال ویرایش آن هستید را نخواند (ما گاهی اوقات بازخورد خوانندگان را در این مورد با VS Code میبینیم). اگر به نظر میرسد اینطور است، لطفاً برای راهنمایی به مستندات IDE یا کامپایلر خود مراجعه کنید.
سوال: اگر کامپایلر من از یک نسخه پیشنمایش/پیشانتشار استفاده میکند، آیا باید یک نسخه به عقب برگردم؟
اگر تازه در حال یادگیری زبان هستید، این کار ضروری نیست. فقط توجه داشته باشید که ممکن است برخی از ویژگیهای نسخه آینده زبان، وجود نداشته باشند، ناقص، دارای اشکال (Buggy) باشند یا اندکی تغییر کنند.