{"id":1877,"date":"2020-06-27T20:26:23","date_gmt":"2020-06-27T20:26:23","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=1877"},"modified":"2020-06-27T20:30:25","modified_gmt":"2020-06-27T20:30:25","slug":"haftalik-c-30-nitelikler-attributes","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/","title":{"rendered":"Haftal\u0131k C++ 30 &#8211; Nitelikler (&#8220;attributes&#8221;)"},"content":{"rendered":"<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/cdn.pixabay.com\/photo\/2016\/01\/19\/17\/16\/rainbow-1149610_960_720.jpg\" alt=\"Rainbow, Roadway, Beautiful, Landscape, Country Road\" \/><\/p>\n<p>Merhaba arkada\u015flar, en son hortlatt\u0131\u011f\u0131m yaz\u0131mda da bahsetti\u011fim \u00fczere, C++ 11 ile ilgili de\u011finmedi\u011fim bir tak\u0131m kabiliyetlere de\u011finmeye ba\u015fl\u0131yorum.<\/p>\n<h2><strong><span style=\"color: #0000ff;\">nitelikler (&#8220;attributes&#8221;)<\/span><\/strong><\/h2>\n<p>Bakaca\u011f\u0131m\u0131z \u00f6zelliklerden ilki <em>nitelik (&#8220;attribute&#8221;)<\/em>. Bu kabiliyetin temel amac\u0131, kaynak kod i\u00e7erisine opsiyonel ya da araca \u00f6zel bir tak\u0131m bilgiler g\u00f6mmektir diyebiliriz. Java ve C# geli\u015ftiricileri &#8220;annotation&#8221; dersem, eminim ne demek istedi\u011fimi anlars\u0131n\u0131z. Burada ama\u00e7, kod yap\u0131lar\u0131 i\u00e7erisine ek bilgi atamak olabilece\u011fi gibi, derleyici veya benzeri ara\u00e7lar i\u00e7in de bilgi olabilir (derleyiciye iletilecek not olarak da d\u00fc\u015f\u00fcn\u00fclebilir). Burada temel kriter, bu tarz tan\u0131mlamalar\u0131n, program\u0131n genel amac\u0131n\u0131 de\u011fi\u015ftirmemesidir.<\/p>\n<p>Bunlara benzer bir tak\u0131m kabiliyetler daha \u00f6nce &#8220;#pragma, __attribute__, __declspec&#8221; gibi anahtar kelimler ile de sa\u011flan\u0131yordu, fakat bunun bir standard\u0131 yoktu (bunlara ili\u015fkin de yaz\u0131m\u0131n sonuna bir ka\u00e7 ba\u011flant\u0131 b\u0131rakaca\u011f\u0131m. Merakl\u0131 okuyucular\u0131m, ziyaret edebilirler). C++ 11 ile bu tarz kullan\u0131mlar i\u00e7in, standart bir yakla\u015f\u0131m getirildi. Bu sayede, C++ i\u00e7erisinde bulunan bir \u00e7ok yap\u0131 (\u00f6r. de\u011fi\u015fken, fonksiyon, vb.) i\u00e7in bu tan\u0131mlamalar\u0131 art\u0131k yapabiliyoruz.<\/p>\n<p>Bunlar\u0131 tan\u0131mlarken genelde hemen \u00f6nce tan\u0131m\u0131 yap\u0131lan yap\u0131ya ili\u015fkin yap\u0131l\u0131r. Hemen \u00f6rnekler ile bakal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true de1\">[[ noreturn ]] void f() {\r\n    throw \"error\"; \/\/ OK\r\n}\r\n\r\n void q [[ noreturn ]] (int i) {\r\n    \r\n    \/\/ Eger arguman 0 dan kucuk ise davranis tanimli degildir \r\n    if (i &gt; 0)\r\n    { \r\n\t    throw \"positive\"; \r\n    }\r\n}<\/pre>\n<p>Niteliklerin a\u015fa\u011f\u0131da verilen \u015fekilde tan\u0131mlanmaktad\u0131r:<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #ff0000;\"><strong><em>[[namespacename::attributename]]\u00a0<\/em><\/strong><\/span><\/p>\n<p>Burada\u00a0<em>namespacename<\/em> ve ::, opsiyoneldir. Bu sebeple, genelde \u00f6n tan\u0131ml\u0131 nitelikler yukar\u0131daki \u00f6rnekteki gibi [[noreturn]] ve [[carries_dependency]] \u015feklinde tan\u0131mlan\u0131r. Burada, <em>namespacename<\/em> ne i\u00e7in kullan\u0131lacak peki diye akl\u0131n\u0131za bir soru gelebilir. Bu da asl\u0131nda, ara\u00e7 geli\u015ftiriciler i\u00e7in, kendi niteliklerini tan\u0131mlama i\u00e7in standart bir format sunmakt\u0131r.<\/p>\n<p>\u015eimdi, muhtemelen sizin akl\u0131n\u0131zda iki temel soru var. Bir, yukar\u0131daki nitelikler ne anlama geliyor, iki daha ba\u015fka hangi nitelikler var. G\u00fczel. Tek tek, bu sorulara bir g\u00f6z atal\u0131m:<\/p>\n<p>Birinci sorunuza bakacak olursak:<\/p>\n<ul>\n<li><strong><code>[[noreturn]]<\/code>:<\/strong> derleyiciye bu fonksiyonun herhangi bir d\u00f6n\u00fc\u015f\u00fc olmayaca\u011f\u0131n\u0131 bildirmek i\u00e7in eklenir (ismi de sanki biraz ip ucu veriyor ne dersiniz \ud83d\ude42 ). Bu hem geli\u015ftiriciyi de bir \u015fekilde uyarmak i\u00e7in. Bu nerede kullan\u0131labilir diye soracak olursan\u0131z. <em>__Exit, exit, quick_exit, terminate<\/em> ve <em>std::rethrow_exception<\/em> fonksiyonlar\u0131 bu \u015fekilde i\u015faretlenmi\u015ftir. Daha detayl\u0131 bilgi i\u00e7in <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/en.cppreference.com\/w\/c\/language\/_Noreturn\">https:\/\/en.cppreference.com\/w\/c\/language\/_Noreturn<\/a><\/strong><\/span> sayfas\u0131na g\u00f6z atabilirsiniz.<\/li>\n<li><strong><code>[[carries_dependency]]<\/code>: <\/strong>bu da yine derleyici i\u00e7in, bellek operasyonlar\u0131n y\u00f6nelik ekstra optimizasyonlar yapabilmesine y\u00f6nelik bir not olarak d\u00fc\u015f\u00fcn\u00fclebilir. Bunun a\u00e7\u0131k\u00e7as\u0131, \u015fu soruya verilen cevap g\u00fczel a\u00e7\u0131kl\u0131yor <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/stackoverflow.com\/questions\/6411270\/what-does-the-carries-dependency-attribute-mean\/6411703#6411703\">https:\/\/stackoverflow.com\/questions\/6411270\/what-does-the-carries-dependency-attribute-mean\/6411703#6411703<\/a><\/strong><\/span>. Bir \u00e7ok sayfa da, nedense buraya sizleri y\u00f6nlendiriyor \ud83d\ude42<\/li>\n<\/ul>\n<p>\u0130kinci sorumuza gelecek olursak:<\/p>\n<ul>\n<li>C++ 11 ile sadece yukar\u0131daki iki tanesi geliyor,<\/li>\n<li>C++ 14 ile birlikte <code>[[deprecated]]<\/code> ve<code>[[deprecated(\"reason\")]]<\/code> geliyor. \u0130sminden de anla\u015f\u0131laca\u011f\u0131 \u00fczere, ilgili kod yap\u0131s\u0131n\u0131n art\u0131k kullan\u0131lmamas\u0131 gerekti\u011fini bir \u015fekilde ifade ettirmek i\u00e7in ekleniyor. Bu da genelde derleyici uyar\u0131s\u0131 olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. \u00d6r.\n<ul>\n<li>\n<pre class=\"lang:c++ decode:true\">[[deprecated]]\r\nvoid depreciatedFunction() {}\r\n\r\nint main() {\r\n\tdepreciatedFunction(); \/\/ Ilgili metodu kullandigimizda\r\n}\r\n\r\n\/\/ Yukaridaki kod a\u015fa\u011f\u0131daki uyar\u0131y\u0131 size verdiriyor (clang i\u00e7in)\r\n warning: 'depreciatedFunction' is deprecated [-Wdeprecated-declarations] depreciatedFunction(); \r\n          ^ note: 'depreciatedFunction' has been explicitly marked deprecated here void depreciatedFunction() {} \r\n<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>C++ 17&#8217;de ise\u00a0<code>[[fallthrough]],<\/code><code>[[nodiscard]] ve<\/code> <code>[[maybe_unused]]<\/code>gibi \u00fc\u00e7 adet standard nitelik sunulmaya ba\u015fland\u0131. Bunlardan ilki switch ifadelerinde \u00f6zellikle break konulmad\u0131\u011f\u0131 durumlarda uyar\u0131 almamak i\u00e7in kullan\u0131l\u0131yor. Bunun sonuna noktal\u0131 virg\u00fcl de koymal\u0131s\u0131n\u0131z. \u0130kinci, bir fonksiyonun d\u00f6n\u00fc\u015f de\u011ferinin \u00f6zellikle g\u00f6z ard\u0131 edilmemesini ifade etmek i\u00e7in kullan\u0131l\u0131yor ki, bu durumda uyar\u0131 veriliyor. Sonuncusu ise, kullan\u0131lmayan \u00f6\u011feler i\u00e7in derleyicinin uyar\u0131 vermemesini sa\u011flamak i\u00e7in kullan\u0131l\u0131yor. Hemen \u00f6rnekler ile bunlara bakal\u0131m:\n<ul>\n<li>\n<pre class=\"lang:c++ decode:true\">void processAlert(Alert alert) \r\n{ \r\n    switch (alert) { \r\n    case Alert::Red: \r\n        evacuate(); \r\n       \/\/ Burada break kullanmadigimiz icin derleyici bize uyari verecek\r\n\r\n    case Alert::Orange: \r\n        trigger_alarm(); \r\n  \r\n       \/\/ burada ise, asa\u011f\u0131daki gibi niteli\u011fi kulland\u0131\u011f\u0131m\u0131zdan, derleyici uyari vermeyecek\r\n       [[fallthrough]]; \r\n  \r\n    case Alert::Yellow: \r\n        record_alert(); \r\n        return; \r\n  \r\n    case Alert::Green: \r\n        return; \r\n    } \r\n}<\/pre>\n<\/li>\n<li>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt; \r\n#include &lt;string&gt; \r\n  \r\n\/\/ Donus degeri mutlaka kullanilmali\r\n[[nodiscard]] int f() \r\n{ \r\n    return 0; \r\n} \r\n  \r\nclass[[nodiscard]] my_class{}; \r\n  \r\n\/\/ Yukaridaki tanimlama sayesinde asagidaki gibi kullan\u0131mlarin\r\n\/\/ hepsi otomatikmen nodiscard varm\u0131\u015f gibi kabul edilir.\r\nmy_class fun() \r\n{ \r\n    return my_class(); \r\n} \r\n  \r\nint main() \r\n{ \r\n    int x{ 1 }; \r\n  \r\n    \/\/ Asa\u011f\u0131 durumda bir s\u0131k\u0131nt\u0131 yok\r\n    x= f(); \r\n  \r\n    \/\/ Hata: donus degeri kullanilmiyor \r\n    f(); \r\n  \r\n    \/\/ Hata: Benzer sekilde donus degeri kullan\u0131lm\u0131yor\r\n    fun() ; \r\n    return x; \r\n}<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>C++ 20 ile\u00a0<code>[[likely]],<\/code><code>[[unlikely]]<\/code>nitelikleri sunulacak. Bunlar da derleyiciye optimizasyonu yapabilmesi i\u00e7in, neyin kullan\u0131l\u0131p\/kullan\u0131lmayaca\u011f\u0131na ili\u015fkin ipu\u00e7u vermeyi hedefliyor.\n<ul>\n<li>\n<pre class=\"lang:c++ decode:true \">for(size_t i=0; i &lt; v.size(); ++i){\r\n    if (v[i] &lt; 0) [[likely]]   \/\/ sevgili derleyici bu k\u0131s\u0131m kuvvetle muhtemel cok cagrilacak, ona g\u00f6re optimize eder misin\r\n         sum -= sqrt(-v[i]);\r\n    else\r\n         sum += sqrt(v[i]);\r\n}<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Derleyiciler taraf\u0131ndan sunular niteliklere ili\u015fkin sayfalar\u0131 a\u015fa\u011f\u0131daki kaynaklara ekliyorum \ud83d\ude09<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar:<\/strong><\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/attributes-in-c\/\"><span style=\"color: #008000;\"><strong>https:\/\/www.geeksforgeeks.org\/attributes-in-c\/<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/arne-mertz.de\/2016\/12\/modern-c-features-attributes\/\"><span style=\"color: #008000;\"><strong>https:\/\/arne-mertz.de\/2016\/12\/modern-c-features-attributes\/<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/attributes\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/language\/attributes<\/strong><\/span><\/a><\/li>\n<li><a href=\"http:\/\/clang.llvm.org\/docs\/LanguageExtensions.html#non-standard-c-11-attributes\"><span style=\"color: #008000;\"><strong>http:\/\/clang.llvm.org\/docs\/LanguageExtensions.html#non-standard-c-11-attributes<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc-4.8.1\/gcc\/Attribute-Syntax.html\"><span style=\"color: #008000;\"><strong>https:\/\/gcc.gnu.org\/onlinedocs\/gcc-4.8.1\/gcc\/Attribute-Syntax.html<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Common-Function-Attributes.html#Common-Function-Attributes\"><span style=\"color: #008000;\"><strong>https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Common-Function-Attributes.html#Common-Function-Attributes<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/pl-pl\/cpp\/cpp\/declspec\"><span style=\"color: #008000;\"><strong>https:\/\/docs.microsoft.com\/pl-pl\/cpp\/cpp\/declspec<\/strong><\/span><\/a><\/li>\n<li><a href=\"https:\/\/clang.llvm.org\/docs\/AttributeReference.html\"><span style=\"color: #008000;\"><strong>https:\/\/clang.llvm.org\/docs\/AttributeReference.html<\/strong><\/span><\/a><\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Merhaba arkada\u015flar, en son hortlatt\u0131\u011f\u0131m yaz\u0131mda da bahsetti\u011fim \u00fczere, C++ 11 ile ilgili de\u011finmedi\u011fim bir tak\u0131m kabiliyetlere de\u011finmeye ba\u015fl\u0131yorum. nitelikler (&#8220;attributes&#8221;) Bakaca\u011f\u0131m\u0131z \u00f6zelliklerden ilki nitelik (&#8220;attribute&#8221;). Bu kabiliyetin temel amac\u0131, kaynak kod i\u00e7erisine opsiyonel ya da araca \u00f6zel bir tak\u0131m bilgiler g\u00f6mmektir diyebiliriz. Java ve C# geli\u015ftiricileri &#8220;annotation&#8221; dersem, eminim ne demek istedi\u011fimi anlars\u0131n\u0131z. Burada&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,41],"tags":[752,751,748,46,398,242,204,754,755,758,760,756,42,750,757,753,749,759],"class_list":["post-1877","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","tag-__declspec","tag-annotation","tag-attributes","tag-c-11","tag-c-14","tag-c-20","tag-c17","tag-carries_dependency","tag-deprecated","tag-fallthrough","tag-likely","tag-maybe_unused","tag-modern-c","tag-nitelik","tag-nodiscard","tag-noreturn","tag-pragma","tag-unlikely"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 30 - Nitelikler (&quot;attributes&quot;) - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[:tr]Haftal\u0131k C++ 30 - Nitelikler (&quot;attributes&quot;)[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhaba arkada\u015flar, en son hortlatt\u0131\u011f\u0131m yaz\u0131mda da bahsetti\u011fim \u00fczere, C++ 11 ile ilgili de\u011finmedi\u011fim bir tak\u0131m kabiliyetlere de\u011finmeye ba\u015fl\u0131yorum. nitelikler (&#8220;attributes&#8221;) Bakaca\u011f\u0131m\u0131z \u00f6zelliklerden ilki nitelik (&#8220;attribute&#8221;). Bu kabiliyetin temel amac\u0131, kaynak kod i\u00e7erisine opsiyonel ya da araca \u00f6zel bir tak\u0131m bilgiler g\u00f6mmektir diyebiliriz. Java ve C# geli\u015ftiricileri &#8220;annotation&#8221; dersem, eminim ne demek istedi\u011fimi anlars\u0131n\u0131z. Burada... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-27T20:26:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-27T20:30:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png\" \/>\n\t<meta property=\"og:image:width\" content=\"32\" \/>\n\t<meta property=\"og:image:height\" content=\"32\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 30 &#8211; Nitelikler (&#8220;attributes&#8221;)\",\"datePublished\":\"2020-06-27T20:26:23+00:00\",\"dateModified\":\"2020-06-27T20:30:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\"},\"wordCount\":692,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"__declspec\",\"annotation\",\"attributes\",\"C++ 11\",\"C++ 14\",\"C++ 20\",\"C++17\",\"carries_dependency\",\"deprecated\",\"fallthrough\",\"likely\",\"maybe_unused\",\"Modern C++\",\"nitelik\",\"nodiscard\",\"noreturn\",\"pragma\",\"unlikely\"],\"articleSection\":[\"C++\",\"Modern C++\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\",\"name\":\"[:tr]Haftal\u0131k C++ 30 - Nitelikler (\\\"attributes\\\")[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2020-06-27T20:26:23+00:00\",\"dateModified\":\"2020-06-27T20:30:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 30 &#8211; Nitelikler (&#8220;attributes&#8221;)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[:tr]Haftal\u0131k C++ 30 - Nitelikler (\"attributes\")[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/","og_locale":"tr_TR","og_type":"article","og_title":"[:tr]Haftal\u0131k C++ 30 - Nitelikler (\"attributes\")[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhaba arkada\u015flar, en son hortlatt\u0131\u011f\u0131m yaz\u0131mda da bahsetti\u011fim \u00fczere, C++ 11 ile ilgili de\u011finmedi\u011fim bir tak\u0131m kabiliyetlere de\u011finmeye ba\u015fl\u0131yorum. nitelikler (&#8220;attributes&#8221;) Bakaca\u011f\u0131m\u0131z \u00f6zelliklerden ilki nitelik (&#8220;attribute&#8221;). Bu kabiliyetin temel amac\u0131, kaynak kod i\u00e7erisine opsiyonel ya da araca \u00f6zel bir tak\u0131m bilgiler g\u00f6mmektir diyebiliriz. Java ve C# geli\u015ftiricileri &#8220;annotation&#8221; dersem, eminim ne demek istedi\u011fimi anlars\u0131n\u0131z. Burada... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2020-06-27T20:26:23+00:00","article_modified_time":"2020-06-27T20:30:25+00:00","og_image":[{"width":32,"height":32,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 30 &#8211; Nitelikler (&#8220;attributes&#8221;)","datePublished":"2020-06-27T20:26:23+00:00","dateModified":"2020-06-27T20:30:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/"},"wordCount":692,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["__declspec","annotation","attributes","C++ 11","C++ 14","C++ 20","C++17","carries_dependency","deprecated","fallthrough","likely","maybe_unused","Modern C++","nitelik","nodiscard","noreturn","pragma","unlikely"],"articleSection":["C++","Modern C++"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/","name":"[:tr]Haftal\u0131k C++ 30 - Nitelikler (\"attributes\")[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2020-06-27T20:26:23+00:00","dateModified":"2020-06-27T20:30:25+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2020\/06\/27\/haftalik-c-30-nitelikler-attributes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 30 &#8211; Nitelikler (&#8220;attributes&#8221;)"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=1877"}],"version-history":[{"count":6,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1877\/revisions"}],"predecessor-version":[{"id":1884,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1877\/revisions\/1884"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/174"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=1877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=1877"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=1877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}