সি ++ এ লজিকাল এক্সওআর অপারেটর?


292

সেখানে কি এমন জিনিস আছে? এটির জন্য আমি প্রথমবারের মতো ব্যবহারিক প্রয়োজনের মুখোমুখি হলাম তবে স্ট্রস্ট্রপটিতে তালিকাভুক্ত কোনওটি আমি দেখতে পাচ্ছি না । আমি লিখতে ইচ্ছুক:

// Detect when exactly one of A,B is equal to five.
return (A==5) ^^ (B==5);

তবে কোনও ^^অপারেটর নেই। আমি কি ^এখানে বিটওয়াস ব্যবহার করতে পারি এবং সঠিক উত্তর পেতে পারি (মেশিনের সত্য ও মিথ্যা উপস্থাপনা নির্বিশেষে)? আমি কখনই মিশ্রিত হই না &এবং &&, বা |এবং ||, তাই আমি ^এবং এর সাথে এটি করতে দ্বিধা বোধ করি না ^^

পরিবর্তে আমি আমার নিজের bool XOR(bool,bool)ফাংশনটি লিখতে আরও স্বাচ্ছন্দ্যবোধ করব ।


57
প্রকৃতপক্ষে, জিম, এটি & এবং & এর মধ্যে একমাত্র পার্থক্য নয় উদাহরণস্বরূপ ... 1 && 2 সত্য। তবে 1 এবং 2 => 0. এর কারণেই, আমি মনে করি যে "শর্ট সার্কিট" কেবল একটি সম্পত্তি যা তাদের কাছে ঘটে। লজিকাল হ'ল আরও গুরুত্বপূর্ণ বৈশিষ্ট্য ...
ব্রায়ান পোস্টো

6
2 ও& 3 == সত্য নয়, তবে 2 এবং 3 == 2 উল্লেখ করবেন না
ডেভিড থর্নলি

1
ডেভিড Thomley: ওয়েল, হাঁ, কিন্তু আছে 2 ==> সত্য, তাই যে ওকে ... মনে রাখবেন, সত্যিই কোন Booleans হয় ...
ব্রায়ান Postow

13
@ ব্রায়ানপোস্টো: আসলে, সি ++ তে রয়েছে।
অ্যাড্রিয়ান উইলেনবাচার

7
নীচে পোস্ট করা হিসাবে, কেন এটি বিদ্যমান নেই তা সম্পর্কে ডেনিস রিচি এর উত্তর: c-faq.com/misc/xor.dmr.html
টোবিয়া

উত্তর:


536

!=অপারেটর এই উদ্দেশ্য করে তোলে boolমান।


7
তবে মিথ্যা! = মিথ্যা => মিথ্যা
জোনাস

13
মনে রাখবেন এটি কেবল বুলেটিয়ানদের জন্য কাজ করে। এবং আমি সেখানে পুরোপুরি ভাল কাজ করবে। 2! = 1 => 1 যা আপনি চান তা নয়! লিরান্নুনা যেমন বলেছেন, তেমনই! উভয় পক্ষের মুখোমুখি সমস্যাটি সমাধান করে। তবে আবার, তারপরে আপনি বিটওয়াইজ ব্যবহার করতে পারেন ^ ...
ব্রায়ান পোস্টো

8
ঠিক আছে, আমি " boolমূল্যবোধের জন্য" উল্লেখ করার জন্য সতর্ক ছিলাম কারণ এটি অ-বুলিয়ানদের জন্য আপনি যা চান তা অগত্যা করে না। এবং এটি যেহেতু সি ++, সে উদ্দেশ্যে boolব্যবহার করার পরিবর্তে একটি প্রকৃত প্রকার রয়েছে int
গ্রেগ হিউগিল

29
আপনি যদি টাইপ aকরার জন্য এটি লিখতে চান তবে লিখুন!(a) != !(a)
ক্রিস লুটজ

6
@ ক্রিসলুটজ: হ্যাঁ, তবে অতিরিক্ত লোড অপারেটরদের থেকে সাবধান থাকুন।
রাওয়ং

246

সত্যিকারের লজিকাল এক্সওআর অপারেশনের জন্য, এটি কাজ করবে:

if(!A != !B) {
    // code here
}

!মানগুলি বুলিয়ানগুলিতে রূপান্তর করতে এবং সেগুলি উপেক্ষা করার জন্য রয়েছে সেগুলি নোট করুন, যাতে দুটি অসম ধনাত্মক পূর্ণসংখ্যার (প্রতিটি ক true) মূল্যায়ন করতে পারে false


6
আমি বুঝতে পারি না কেন এ এবং বি এর সাথে অবহেলিত!
মার্টিন হ্যানসেন

26
মূলত এগুলিকে বুলেয়ানে রূপান্তর করা। !!শুধু ভাল জিজ্ঞাসা কাজ করবে, কিন্তু যেহেতু তাদের আলাদা হওয়া দরকার তাই তাদের অবহেলা করা কোনও ক্ষতি করে না।
লিরানাউনা

4
প্রশ্নটি হল, কম্পাইলাররা কি এটি সঠিকভাবে অনুকূল করতে সক্ষম হবে?
einpoklum 12'14

6
বুলসকে স্বাভাবিক করার গুরুত্ব না জেনে আমাকে 2 দিন অতিবাহিত করে।
মাকান তায়েবী

9
@ লীরাণুনা, "কেন এ এবং বি অবহেলিত!" / "মূলত এগুলিকে বুলেয়ানে রূপান্তর করতে।" - আমি মনে করি এটি উত্তরে উল্লেখযোগ্য।
cp.engr

42

যথাযথ ম্যানুয়াল লজিকাল এক্সওর বাস্তবায়ন নির্ভর করে আপনি আপনার এক্সওআর দিয়ে অন্যান্য লজিকাল অপারেটরগুলির ( ||এবং &&) এর সাধারণ আচরণকে কত ঘনিষ্ঠভাবে নকল করতে চান তার উপর নির্ভর করে । এই অপারেটরদের সম্পর্কে দুটি গুরুত্বপূর্ণ বিষয় রয়েছে: 1) তারা শর্ট সার্কিটের মূল্যায়নের গ্যারান্টি দেয়, 2) তারা একটি সিকোয়েন্স পয়েন্ট উপস্থাপন করে, 3) তারা কেবল তাদের অপারেশনগুলির মূল্যায়ন করে।

এক্সওআর মূল্যায়ন, যেমন আপনি বুঝতে পেরেছেন, সংক্ষিপ্ত-প্রচারিত হতে পারে না কারণ ফলাফল সর্বদা উভয় সংস্থার উপর নির্ভর করে। সুতরাং 1 প্রশ্নের বাইরে। তবে কি 2? আপনি যদি 2 এর বিষয়ে চিন্তা না করেন তবে সাধারণকরণ (অর্থাত bool) মানগুলির সাথে অপারেটর !=ফলাফলের ক্ষেত্রে XOR এর কাজ করে। এবং অপারেশনগুলি সহজেই আনরির সাথে স্বাভাবিক করা যায় !, যদি প্রয়োজন হয়। এইভাবে !A != !Bসেই ক্ষেত্রে যথাযথ XOR প্রয়োগ করে।

তবে আপনি যদি অতিরিক্ত সিকোয়েন্স পয়েন্টটির বিষয়ে যত্নশীল হন তবে !=এক্সওআর ^বাস্তবায়নের সঠিক উপায় নয় বা বিটওয়াইজও নয় । XOR (ক, খ) সঠিকভাবে করার একটি সম্ভাব্য উপায় নিম্নরূপ দেখতে পারে

a ? !b : b

এটি আসলে যেমন ঘনিষ্ঠ হিসাবে আপনি একটি সাদাসিধা XOR যাও থেকে "অনুরূপ" উপার্জন পেতে পারেন হয় ||এবং &&। এটি কেবলমাত্র কাজ করবে, যদি আপনি নিজের ম্যাক্রো হিসাবে এক্সওআর বাস্তবায়ন করেন। ক্রিয়াকলাপটি ফাংশনের যুক্তিগুলিতে প্রযোজ্য হবে না বলে কোনও ফাংশন করবে না।

যদিও কেউ বলতে পারেন যে, প্রত্যেকের ক্রম বিন্দু থাকার একমাত্র কারণ &&এবং ||সংক্ষিপ্ত-সার্কিট মূল্যায়ন সমর্থন করা, এবং এইভাবে এক্সওর এর প্রয়োজন হয় না। এটি আসলে বোঝায়। তবুও, মাঝখানে একটি সিকোয়েন্স পয়েন্ট সহ একটি এক্সওআর রাখার বিষয়টি বিবেচনাযোগ্য। উদাহরণস্বরূপ, নিম্নলিখিত এক্সপ্রেশন

++x > 1 && x < 5

সি / সি ++ (কমপক্ষে সিকোয়েন্সিংয়ের ক্ষেত্রে) এর আচরণ এবং নির্দিষ্ট ফলাফল নির্ধারণ করেছে। সুতরাং, কেউ যুক্তিযুক্ত হিসাবে ব্যবহারকারী হিসাবে সংজ্ঞায়িত লজিকাল এক্সওআর থেকে একই আশা করতে পারে

XOR(++x > 1, x < 5)

যদিও !=ভিত্তিক এক্সওরটির এই সম্পত্তি নেই।


1
আপনি সম্পর্কে অন্যান্য গুরুত্বপূর্ণ বিষয় দিতে ভুলে গেছেন ||এবং &&সি) তারা একটি বুলিয়ান প্রেক্ষাপটে operands মূল্যায়ন। অর্থাৎ 1 && 2সত্য, অসদৃশ হয় 1 & 2যা শূন্য। তেমনি, কোনও ^^অপারেটর এই অতিরিক্ত বৈশিষ্ট্যটি সরবরাহের জন্য, বুলিয়ান প্রসঙ্গে অপারেন্ডদের মূল্যায়নের জন্য কার্যকর হতে পারে। যেমন 1 ^^ 2মিথ্যা (বিপরীতে 1 ^ 2)।
ক্রেগ ম্যাককুইন

2
@ ক্রেইগ ম্যাককুইন: আমি এটি মিস করছি না। আমার পোস্টের দ্বিতীয় অনুচ্ছেদে এটি উল্লেখ করা হয়েছে। আমার মতে অপারেটরদের বুলিয়ান মান হিসাবে গণ্য করা লজিক্যাল অপারেটরগুলির একটি সমালোচনামূলক বৈশিষ্ট্য নয়, এক অর্থে যে তারা কেবল সেই কারণেই প্রবর্তিত হবে না। তাদের প্রবর্তনের মূল কারণটি হ'ল সংক্ষিপ্ত-সার্কিট মূল্যায়ন এবং এর জন্য প্রয়োজনীয় ক্রম বিন্দু।
এন্টি

আজকাল, আপনার পরামর্শটি এখনও কেবল একটি ম্যাক্রোর সাথে কাজ করবে? যদিও এটি সত্য যে কোনও ফাংশনে মূল্যায়ন করার জন্য প্যারামিটারের ক্রম সংকলক-নির্ভর, বর্তমানে বাম-থেকে-ডান থেকে পৃথক হওয়া বিরল নয়? এছাড়াও, এখানে মন্তব্যগুলিতে লক্ষ্য করা উচিত যে কোনও বাস্তবায়ন যদি মনে হয় #define XOR(ll,rr) { ll ? !rr : rr }, তবে একটি কল যেমন int x = 2; XOR(++x > 1, x < 5);ভুল ফল দেয়। int x = 2; XOR( (++x > 1), (x < 5) );সঠিক প্রত্যাশিত ফলাফল দেওয়ার জন্য এই কলটিতে অতিরিক্ত প্যারেনেসিস থাকতে হবে।
আরএস

1
যেহেতু এক্সওআর শর্ট সার্কিট করতে পারে না তাই সিকোয়েন্স পয়েন্টের প্রয়োজন নেই। XOR এর ক্ষেত্রে আরও + পছন্দ। আপনি যদি (++ x) + x 2x + 1 এর সমান হওয়ার পক্ষে তর্ক করতে না চান তবে সিকোয়েন্স পয়েন্টটি যুক্তিসঙ্গত নয়।
hkBst

1
@ এইচকেবিস্ট: আমি মনে করি এটি আমার উত্তরের দ্বিতীয় অংশে পুরোপুরি isেকে গেছে।
এন্টি

25

এক্সওআর করার আরও একটি উপায় রয়েছে:

bool XOR(bool a, bool b)
{
    return (a + b) % 2;
}

যা এর মাধ্যমে অবশ্যই কাজ করার জন্য প্রদর্শিত হতে পারে:

#include <iostream>

bool XOR(bool a, bool b)
{
    return (a + b) % 2;
}

int main()
{
    using namespace std;
    cout << "XOR(true, true):\t" << XOR(true, true) << endl
         << "XOR(true, false):\t" << XOR(true, false) << endl
         << "XOR(false, true):\t" << XOR(false, true) << endl
         << "XOR(false, false):\t" << XOR(false, false) << endl
         << "XOR(0, 0):\t\t" << XOR(0, 0) << endl
         << "XOR(1, 0):\t\t" << XOR(1, 0) << endl
         << "XOR(5, 0):\t\t" << XOR(5, 0) << endl
         << "XOR(20, 0):\t\t" << XOR(20, 0) << endl
         << "XOR(6, 6):\t\t" << XOR(5, 5) << endl
         << "XOR(5, 6):\t\t" << XOR(5, 6) << endl
         << "XOR(1, 1):\t\t" << XOR(1, 1) << endl;
    return 0;
}

7
এই পদ্ধতিটি কিছুটা ধীর কোড উত্পন্ন করতে পারে - libstdc ++ ব্যবহার করে ক্ল্যাং এবং জিসিসি
xaxxon

18

এক্সওআর অপারেটরটি সংক্ষিপ্তভাবে প্রচারিত হতে পারে না; অর্থাৎ আপনি কেবলমাত্র তার বাম হাতের ক্রিয়াকলাপটি মূল্যায়ন করে কোনও এক্সওআর এক্সপ্রেশনটির ফলাফল অনুমান করতে পারবেন না। সুতরাং, কোনও ^^সংস্করণ সরবরাহ করার কোনও কারণ নেই ।


25
-1 কারণ && এবং & এর মধ্যে প্রধান পার্থক্য কেবল সংক্ষিপ্ত সার্কিট নয়। 1 && টি সত্য, তবে 1 এবং 2 টি মিথ্যা। সংক্ষিপ্ত সার্কিট কেবল একটি কার্যকর পার্শ্ব প্রতিক্রিয়া।
ব্রায়ান পোস্টো

6
উত্তরটি নিয়ে &&এবং মোটেই কথা বলা হচ্ছে না &। এর বক্তব্যটি হ'ল প্রবর্তনের কোনও কারণ নেই ^^। সম্পত্তি যে ^^কোনও নন-মানকে 1সত্যই কার্যকর হিসাবে বিবেচনা করবে না, আমি সন্দেহ করি। বা কমপক্ষে আমি কোনও ব্যবহার দেখতে পাচ্ছি না।
জোহানেস স্কাউব -

6
এছাড়াও সি ++! = অন্যান্য-ভাষা। সি এবং সি ++ তে শর্ট সার্কিট হিসাবে উপরে দেখানো হয়েছে কেবল কিছু-সুন্দর-থেকে-থাকা জিনিসই নয় এটি মূলত গুরুত্বপূর্ণ। :)
জোহানেস স্কাউব -

13
তারপরে আপনার কেন ডেনিস রিচির উত্তরটি পড়া উচিত নয় কেন এটি বিদ্যমান নেই: it.usyd.edu.au/~dasymond/mirror/c-faq/misc/xor.dmr.html
জোহানেস শ্যাব - লিটব

5
কেন এটি নেই তা নিয়ে ডেনিস রিচির উত্তরের একটি কার্যকারী লিঙ্ক এখানে রয়েছে: c-faq.com/misc/xor.dmr.html
টোবিয়া

13

কিছু ভাল কোড পোস্ট করা হয়েছে যা সমস্যাটিকে সমস্যা সমাধান করেছে! এ! =! খের চেয়ে ভাল

নোট করুন যে আমাকে BOOL_DETAIL_OPEN / CLOSE যোগ করতে হয়েছিল তাই এটি এমএসভিসি 2010 এ কাজ করবে

/* From: http://groups.google.com/group/comp.std.c++/msg/2ff60fa87e8b6aeb

   Proposed code    left-to-right?  sequence point?  bool args?  bool result?  ICE result?  Singular 'b'?
   --------------   --------------  ---------------  ---------- ------------  -----------  -------------
   a ^ b                  no              no             no          no           yes          yes
   a != b                 no              no             no          no           yes          yes
   (!a)!=(!b)             no              no             no          no           yes          yes
   my_xor_func(a,b)       no              no             yes         yes          no           yes
   a ? !b : b             yes             yes            no          no           yes          no
   a ? !b : !!b           yes             yes            no          no           yes          no
   [* see below]          yes             yes            yes         yes          yes          no
   (( a bool_xor b ))     yes             yes            yes         yes          yes          yes

   [* = a ? !static_cast<bool>(b) : static_cast<bool>(b)]

   But what is this funny "(( a bool_xor b ))"? Well, you can create some
   macros that allow you such a strange syntax. Note that the
   double-brackets are part of the syntax and cannot be removed! The set of
   three macros (plus two internal helper macros) also provides bool_and
   and bool_or. That given, what is it good for? We have && and || already,
   why do we need such a stupid syntax? Well, && and || can't guarantee
   that the arguments are converted to bool and that you get a bool result.
     Think "operator overloads". Here's how the macros look like:

   Note: BOOL_DETAIL_OPEN/CLOSE added to make it work on MSVC 2010
  */

#define BOOL_DETAIL_AND_HELPER(x) static_cast<bool>(x):false
#define BOOL_DETAIL_XOR_HELPER(x) !static_cast<bool>(x):static_cast<bool>(x)

#define BOOL_DETAIL_OPEN (
#define BOOL_DETAIL_CLOSE )

#define bool_and BOOL_DETAIL_CLOSE ? BOOL_DETAIL_AND_HELPER BOOL_DETAIL_OPEN
#define bool_or BOOL_DETAIL_CLOSE ? true:static_cast<bool> BOOL_DETAIL_OPEN
#define bool_xor BOOL_DETAIL_CLOSE ? BOOL_DETAIL_XOR_HELPER BOOL_DETAIL_OPEN

6

একটি সাধারণ ব্যবহার করুন:

return ((op1 ? 1 : 0) ^ (op2 ? 1 : 0));

5

এখানে আপনি কীভাবে সি ++ তে একটি XOR তুলনা লিখবেন বলে আমি মনে করি:

bool a = true;   // Test by changing to true or false
bool b = false;  // Test by changing to true or false
if (a == !b)     // THIS IS YOUR XOR comparison
{
    // do whatever
}

প্রমাণ

XOR TABLE
 a   b  XOR
--- --- ---
 T   T   F
 T   F   T
 F   T   T
 F   F   F

a == !b TABLE
 a   b  !b  a == !b
--- --- --- -------
 T   T   F     F
 T   F   T     T
 F   T   F     T
 F   F   T     F

প্রমাণটি হ'ল ইনপুট এবং আউটপুটগুলির একটি বিস্তৃত অধ্যয়ন দেখায় যে দুটি টেবিলের জন্য, প্রতিটি ইনপুট সেটের জন্য ফলাফল দুটি টেবিলে সর্বদা অভিন্ন থাকে।

সুতরাং, মূল প্রশ্নটি কীভাবে লিখবেন:

return (A==5) ^^ (B==5)

উত্তর হবে

return (A==5) == !(B==5);

অথবা আপনি যদি চান, লিখুন

return !(A==5) == (B==5);

! একটি!
xaxxon

3

(A || B) && !(A && B)

প্রথম অংশটি A OR B, যা অন্তর্ভুক্ত OR; দ্বিতীয় অংশটি হ'ল, না এ এবং বি। একসাথে আপনি A বা B পান তবে এ এবং বি উভয়ই নয়

এটি নীচের সত্য সারণীতে প্রমাণিত XOR সরবরাহ করবে।

|-----|-----|-----------|
|  A  |  B  |  A XOR B  |
|-----|-----|-----------|
|  T  |  T  |   False   |
|-----|-----|-----------|
|  T  |  F  |   True    |
|-----|-----|-----------|
|  F  |  T  |   True    |
|-----|-----|-----------|
|  F  |  F  |   False   |
|-----|-----|-----------|

আমি এই পদ্ধতির উপর পারফরম্যান্সটি খনন করছি না: quick-bench.com/PgNgGN8ATrKt7el1dAaJj7QtuF4
xaxxon

এটি সম্পর্কে রক্ষণাত্মক হওয়ার দরকার নেই।
xaxxon

1
@ এক্স্যাক্সনসন: এই মানদণ্ডে বিন্দুটি দেখতে পাবেন না ?? স্ট্রিংক্রিয়েশনে আপনি স্ট্রিং তৈরিতে ব্যবহার করেছিলেন তবে দ্বিতীয় মানদণ্ডে আপনি তা করেন নি। যদি আপনি উভয় বেঞ্চমার্কে অভিন্ন কোড রাখেন এবং প্রতিটি বেঞ্চমার্কের জন্য আলাদা এক্সওআর কল করেন (এক্সওআর এবং এক্সওআর 2) আপনি একই বেনমার্ক ফলাফল পাবেন। তাহলে আপনি কী বলতে চাইছেন?
SoLaR

1

আমি "xor" ব্যবহার করি (মনে হয় এটি একটি কীওয়ার্ড; কোডে: ব্লক কমপক্ষে এটি সাহসী হয়) ঠিক তেমন আপনি "এবং" এর পরিবর্তে &&এবং "বা" পরিবর্তে ব্যবহার করতে পারেন ||

if (first xor second)...

হ্যাঁ, এটি কিছুটা দিকের। দুঃখিত।


2
আমি অনুমান করছি যে সেগুলি কোথাও থেকে # নির্দিষ্ট সংজ্ঞা লুকিয়ে আছে। আমি বেশ নিশ্চিত যে "এবং" এবং "জোর"
হ'ল আনসিসি

1
@ ব্রায়ান পোস্টো: আমি জানি না সি 79 কী, তবে সি ++ 98 এ andএবং xorস্ট্যান্ডার্ড লাইব্রেরি ম্যাক্রোগুলি। থাই "কোথাও" থেকে নয়, তারা <iso646.h> থেকে। এই ম্যাক্রোগুলি C99 এও রয়েছে (সি 98/90 সম্পর্কে নিশ্চিত নয়)।
এন্টি

5
@Brian Postow: ... xorঘোরা , bitwise , XOR যদিও যখন andহয় লজিক্যাল এবং।
এএনটি

1
আমি সি 89 কে সি 79 হিসাবে ভুল টাইপ করেছি ... এবং এক্সওর ইত্যাদি আমার কেএন্ডআর এর অনুলিপিটিতে নেই। আমি কখনই iso686.h ব্যবহার করেছি বলে মনে করি না, কমপক্ষে জেনেশুনে নয় ... এবং তাই, হ্যাঁ, সেগুলি কোথাও থেকে # নির্দিষ্ট করা হয়েছে, আপনি কেবল জানেন যে কোথাও বি-)
ব্রায়ান পোস্ট

2
তারা অবশ্যই হে 99 ব্যবহার করে সি 99 এ রয়েছে। সি ++ এ, তারা ভাষাতে "বিকল্প টোকেন" হিসাবে সংহত হয়েছে এবং struct A { compl A() { } };উদাহরণস্বরূপ, আপনি কোনও ডেস্ট্রাক্টর সংজ্ঞায়িত করতে পারেন ।
জোহানেস স্কাউব -

0
#if defined(__OBJC__)
    #define __bool BOOL
    #include <stdbool.h>
    #define __bool bool
#endif

static inline __bool xor(__bool a, __bool b)
{
    return (!a && b) || (a && !b);
}

এটি সংজ্ঞায়িত হিসাবে কাজ করে। শর্তাদি হ'ল আপনি যদি উদ্দেশ্য-সি ব্যবহার করছেন , যা বুলের পরিবর্তে বিওএল চেয়েছে (দৈর্ঘ্য আলাদা!)


3
এটি ডাবল আন্ডারস্কোর নিয়ম লঙ্ঘন করে।
ট্যামস সেজেলি

@ ট্যামসজেলিই অগত্যা সংকলক হিসাবে এটি দেখতে পারা যায় না যে এটি পূর্ব থেকে প্রসেস করা হয়েছিল, এবং উদ্দেশ্য-সি বিশ্বের ডাবল আন্ডারস্কোরগুলি মোটামুটি সাধারণ।
ম্যাক্সথন চ্যান

প্রিপ্রোসেসর সম্পর্কে ভাল কথা, যদিও আমার কাছে এটি এখনও কোডটি এইভাবে গন্ধ পায় (যাইহোক যাইহোক টাইপডেফের পরিবর্তে ম্যাক্রো কেন ব্যবহার করবেন?)। এছাড়াও, প্রশ্নটি উদ্দেশ্য-সি সম্পর্কে নয়।
ট্যামস সেজেলি

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