You can edit almost every page by Creating an account. Otherwise, see the FAQ.

C++/CX

از EverybodyWiki Bios & Wiki
پرش به:ناوبری، جستجو

خطای اسکریپتی: پودمان «AfC submission catcheck» وجود ندارد.

C++/CX (پسوندهای مؤلفه C++) یک طرح زبانی برای پلتفرم Windows Runtime مایکروسافت است.به صورت گسترش زبان برای کامپایلرهای ++C است و باعث میشود که برنامه نویسان ++C بتوانند برنامه هایی بنویسند که Windows Runtime یا به طور خلاصه WinRT، از [۱]APIرا فراخوانی کننند. C++/CX توسط C++/WinRT جایگزین شده است که یک گسترش زبان C++ نیست؛ بلکه بلکه یک کتابخانه کاملاً استاندارد ISO C++17 مبتنی بر فایل هدر است.


برنامه‌های افزودنی زبان، نحو را از C++/CLI قرض می‌گیرند، اما کد بومی Windows Runtime Universal Windows Platform را به جای Common Language Runtime و کد مدیریت شده هدف قرار می‌دهند . مجموعه‌ای از انتزاع‌های نحوی و کتابخانه‌ای را به ارمغان می‌آورد که مدل برنامه‌نویسی WinRT مبتنی بر زیرمجموعه WRL COM را به گونه‌ای طراحی می‌کند که برای کدنویس‌های برنامه‌های افزودنی مدیریت‌شده C++/CLI شهودی باشد.


امکان فراخوانی زمان اجرا ویندوز از ISO C++ بومی از طریق کتابخانه قالب C++ Windows Runtime C++ (WRL) وجود دارد. با این حال، WRL نیز توسط C++/WinRT جایگزین شده است. [۱]

نحو پسوند[ویرایش]

C++/CX گسترش های نحوی را برای برنامه نویسی برای زمان اجرا ویندوز معرفی می کند. نحو کلی غیر اختصاصی پلتفرم با استاندارد C++11 سازگار است.

اشیاء[ویرایش]

اشیاء WinRT با استفاده از دستور ref new ایجاد یا فعال میشوند و به متغیر هایی که قبلا تعریف شده اند با استفاده از دستور ^ (hat) که از C++/CLI به ارث رسیده اختصاص داده میشوند.

Foo^ foo = ref new Foo();

یک متغیر WinRT به سادگی یک اشاره گر به جدول روش مجازی و اشاره گر به داده های داخلی شی است.

شمارش مرجع[ویرایش]

یک شی WinRT مرجع شمارش میباشد و بنابراین به طور مشابه با اشیاء C++ معمولی محصور در shared_ptrs رفتار می کند . یک شی زمانی حذف می شود که هیچ مرجعی به آن اشاره نکند.

جمع آوری زباله نداریم. با این وجود، کلمه کلیدی gcnew برای استفاده احتمالی در آینده رزرو شده است.

کلاس ها[ویرایش]

کلاس های زمان اجرا[ویرایش]

انواع خاصی از کلاس های زمان اجرا وجود دارد که ممکن است شامل سازه های گسترش مؤلفه باشد. به آنها با نام ref classes اشاره میشود زیرا با استفاده از ref class ساخته میشونند.

public ref class MyClass
{

};
کلاس های جزئی[ویرایش]

در C++/CX مفهوم کلاس های جزئی معرفی میشود. کلاس های جزئی باعث میشوند بتوان تعریف یک کلاس واحد را بین چند فایل تقسیم کرد. اینکار عمدتا برای فعال کردن ابزار طراحی رابط کاربری گرافیکی XAML برای دیزاین و تولید خودکار کد در فایل های جداگانه است بطوری که باعث شود تا منطق نوشته شده توسط توسعه دهنده دچار شکست نشود.

این بخش‌ها بعداً در کامپایل ادغام می‌شوند.


زبان های NET. مانند سی شارپ سالهاست که این ویژگی را دارند. کلاس های جزئی هنوز به استاندارد C++ اضافه نشده اند در نتیجه نمی توانند در C++11 خالص استفاده شوند.

فایل ها که توسط طراح رابط کاربری گرافیکی(GUI-designer) تولید و به روز می شوند و بنابراین برنامه نویس نباید آن را اصلاح کند. به کلمه کلیدی partial توجه کنید.

// foo.private.h
#pragma once

partial ref class foo
{
private:
  int id_;
  Platform::String^ name_;
};

برنامه نویس منطق رابط کاربری را در فایل می نویسد. هدری که قسمت تولید شده توسط کامپایلر از کلاس در آن تعریف شده است وارد(import) می شود. توجه داشته باشید که کلمه کلیدی partial ضروری نیست.

// foo.public.h
#pragma once
#include "foo.private.h"

ref class foo
{
public:
  int GetId();
  Platform::String^ GetName();
};

این فایلی است که اعضای کلاس جزئی در آن پیاده سازی می شوند.

// foo.cpp
#include "pch.h"
#include "foo.public.h"

int foo::GetId() {return id_;}
Platform::String^ foo::GetName {return name_;}

ژنریک ها[ویرایش]

زمان اجرای ویندوز (Windows Runtime) و در نتیجه C++/CX اززمان اجرای مبتنی بر ژنریک ها پشتیبانی می کند. داده ی اطلاعات ژنریک در فراداده(metadata) وجود دارد و در زمان اجرا نمونه سازی میشود، برخلاف الگوهای C++ که ساختارهای زمان کامپایل هستند. هر دو توسط کامپایلر پشتیبانی می شوند و می توان آنها را با هم ترکیب کرد.

generic<typename T> 
public ref class bag 
{
   property T Item;
};

فراداده[ویرایش]

همه برنامه های WinRT کلاس ها و اعضای اعلام شده خود را از طریق ابرداده در معرض نمایش قرار می دهند. قالب (format) مشابه قالب استاندارد ایجاد شده در زیرساخت زبان مشترک (CLI) یا همان استاندارد ایجاد شده در NET Framework است. به همین دلیل، کد می تواند در زبان های C++/CX، CLI و جاوا اسکریپتی که زمان اجرای ویندوز را هدف قرار می دهند، به اشتراک گذاشته شود.

زمان اجرا کتابخانه[ویرایش]

C++/CX مجموعه ای از کتابخانه ها دارد که زمان اجرای ویندوز را هدف قرار می دهند. اینها به پل زدن عملکرد کتابخانه استاندارد C++ و WinRT کمک می کنند.

تشخیص مبتنی بر پیش پردازنده[ویرایش]

با آزمایش وجود نماد پیش پردازنده __cplusplus_winrt می توانید تشخیص دهید که برنامه افزودنی C++/CX روشن است یا خیر.

  • زمان اجرا ویندوز

منابع[ویرایش]

 

  1. Introduction to C++/WinRT docs.microsoft.com

== لینک های خارجی

==

الگو:C++ProLang

رده:کامپایلرهای سی++ رده:خانواده زبان برنامه‌نویسی سی++ رده:سی++ رده:صفحات با ترجمه بازبینی‌نشده



This article "C++/CX" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:C++/CX. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.



Read or create/edit this page in another language[ویرایش]