সি ++ এ ^ () C} এবং ^ {} এর অর্থ কী?


10

আমি সম্প্রতি কিছু সি ++ কোড পড়েছি:

setData(total, &user, ^() {
  struct dst_t to = {ip, port};
  sendData(to, data);
});


getData(total, ^{
  recvData(data, NULL);
});

আমি কখনও দেখিনি ^() {}বা দেখিনি ^{}। তাঁরা কি বোঝাতে চাইছেন? কিছু নামহীন ফাংশন?


3
এটি কি পরিচালিত সি ++, ওরফে সি ++ / সিএলআই? এটি কি সি #?
থমাস ম্যাথিউজ

^অবশ্যই ম্যাক্রোর মতো দেখাচ্ছে, #defineবিবৃতি দিয়ে স্ক্যান করার চেষ্টা করুন । বাস্তবে আপনি ম্যাক্রোগুলি প্রসারিত gccকরার -Eবিকল্পটি দিয়ে চালাতে পারেন :g++ -E main.cpp
নেশকীভ

এটি কি ঝোলা দিয়ে সংকলিত হয়?
কামিলকুক


উত্তর:


3

^() {}প্রতীক সহ একটি সদৃশ পাওয়া শক্ত , তাই আমি একটি উত্তর পোস্ট করব।

এগুলি হ'ল "ব্লকস", যা লম্বা-জাতীয় ক্লোজার তৈরি করে এমন একটি ক্ল্যাং সংকলক এক্সটেনশন।

উইকিতে এবং কলংগুলিতে ব্লকগুলির জন্য ভাষা নির্দিষ্টকরণে আরও তথ্য ।

যখন খালি যুক্তি তালিকার তালিকা থাকে তখন (void)বাদ দেওয়া যায়, ^ { recvData(data, NULL); }একই রকম ^ void (void) { recvData(data, NULL); }


3
মনে রাখবেন যে তারা সি ও সি ++ কোডে কাজ করার সময় এগুলি মূলত একটি উদ্দেশ্য-সি বিশ্বজুড়ে তৈরি করা হয়েছিল এবং আপনি যদি সি ++ ব্যবহার করছেন তবে আপনার অবশ্যই প্রায়শই এর পরিবর্তে আরও বেশি পরিমাণে আইডেম্যাটিক ল্যাম্বডাস এবং স্ট্যান্ড :: ফাংশন ব্যবহার করা উচিত (যদিও লক্ষ করুন যে স্ট্যান্ড :: ফাংশনটি ব্লক ধারণ করতে পারে )
রিচার্ড জে। রস তৃতীয়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.