الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحديد الـ Byte order بإستخدام الـ Preprocessor

بدأه C++er في 2 سبتمبر 2011 · 3 رد · 674 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أغلب الأكواد الموجوده تشير بأن اختبار حالة الـ Byte Order لا يمكن ان تتم بإستخدام الـ Preprocessor، و قد وجدت كود يستخدم لهذا الغرص وقت المعالجه و يعمل مع المترجمات intel و vc++ و gcc:

#if '1234' != 0x31323334
#  define BIG_ENDIAN
#endif

و لكن هل سيعمل مع باقي المترجمات؟

و الله ولي التوفيق

1

مدونتي: C++ Tips and Tricks

#2

:S

مدونتي: C++ Tips and Tricks

#3

انا اول مر اشوف الطريقة دى مع العلم انها عجتنى :)

اعتقد ان الطريقة الاشهر هى

int isLittleEndian() { long int testInt = 0x12345678;             char *pMem;  pMem = (char *) testInt; if (pMem[0] == 0x78) return(1); else return(0); }

مع اختلافات بعض الاختلافات طبعا

#4

حسب معرفتي المتواضعة أخ محمد, ليس هناك طريقة standard لاكتشاف هذا الأمر. عليك اللجوء لوثائق كل مترجم تريد دعمه.

1

مواضيع مشابهة