विजुअल C++ 10 stdlib.h अन्य बातों के अलावा इस रत्न शामिल हैं के साथ भेज दिया जाता है:इस "तत्वों की संख्या" मैक्रो में डमी के अतिरिक्त उद्देश्य क्या है?
template <typename _CountofType, size_t _SizeOfArray>
char (*__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
#define _countof(_Array) (sizeof(*__countof_helper(_Array)) + 0)
जो का उपयोग करता है a clever template trick to deduce array size और __countof
में पारित किया जा रहा से संकेत को रोकने के।
मैक्रो परिभाषा में + 0
का उद्देश्य क्या है? यह किस समस्या को हल करता है?
[पी एस यह एक टिप्पणी के रूप में विचार करें] केवल एक चीज जिसे मैं सोच सकता हूं वह इसे टेम्पलेट विशेषज्ञता में प्रयोग करने योग्य बना रहा है। हालांकि यह एक सीमा है। – Pubby
बेशक, यदि वीएस -2010 ने 'constexpr' का समर्थन किया है तो यह होगा: 'टेम्पलेट <टाइपनाम टी, आकार_टी एन> constexpr size_t आकार (टी (और) [एन]) {वापसी एन; } ' –