الشبكة العربية لمطوري الألعاب

خبير  أحمد عبد الغني مشاركة 1

أجد دائماً في أغلب الـ structs التي أمررها للـ ++C تحوي member اسمه cbSize أو ما شابهه... يجب أن أعبئه بالقيمة
sizeof(struct_type)
ما الحكمة منه؟ لماذا هو موجود دائماً؟ هل هو نوع من الروتين العديم الفائدة؟
__
هناك 10 أنواع من البشر.. من يعرف نظام العد الثنائي، ومن لا يعرفه!

اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم

خبير  Mohammad Khashashneh مشاركة 2

If it’s for nothing, then you wouldn’t find it in almost all structures☺
Mainly it’s there for validating the struct When someone calls your code. Older programs use old versions of the struct and you likely want to make a special treatment for such old data types when they are passed to your application. This is also useful for backward compatibility. You can also use the member when you want to allocate data for anonyms data types. Such situations are very rare but they do occur
especially in component and Driver programming.

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع

خبير  أحمد عبد الغني مشاركة 3

جزيل الشكر على الشرح... سؤال تعقيبي... ماذا تقصد بـ "anonymous data types"؟
مثل ماذا؟

__
هناك 10 أنواع من البشر.. من يعرف نظام العد الثنائي، ومن لا يعرفه!

اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم

خبير  Mohammad Khashashneh مشاركة 4

Ah, sorry, I meant by “anonymous data types” , data types with no defined size. Sometimes you need a data type (struct) that has a variable size that depends on uncountable conditions. Such a struct is the one that describes a certain hardware capabilities. A very famous example is the DEVMODE struct which describes Display and printer devices. This structure has 2 parts, The standard part that contains members common with all devices which has a fixed size and describes the most common features of all devices, and the second part which describes the private features of a specific device and has a size which depends on the device type. So when you want to use this structure in your code, you can know the real size of the DEVMODE from its cbSize member.

As I said these are rare situations. The above structure is used when writing a Printer driver or a code for handling certain options in a device.

من سار على الدرب وصل, من جد وجد...
بس عتبك على اللي بيسمع