_countof 宏

_countof 是 C++中计算一个固定大小数组长度的宏,比如:



T arr[
10];



for( size_t i=0; i<_countof(arr);--i ) do_something();



对于固定大小数组计算起来非常方便。



/_countof helper/

#if!defined(_countof)

#if!defined(__cplusplus)

#define_countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))

#else

extern"C++"

{

template
<typename _CountofType, size_t _SizeOfArray>

char(__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];

#define_countof(_Array) sizeof(__countof_helper(_Array))

}

#endif

#endif



用宏计算的方式容易理解,但是编译期语法检查不够严格。C
++中使用了比较严格的语法,确保传入的参数是固定数组。



C
++采用type_traits的方式来提取给定数组的信息,通过一个模板函数来完成这个操作:



__countof_helper(UNALIGNED _CountofType (
&_Array)[_SizeOfArray]) 函数来提取_Array的信息:



参数为_Array的引用,保证传入参数必须为固定数组,类型为_CountofType, 大小为_SizeofArray.



返回值为:
char(*Arr)[_SizeofArray];指向大小为_SizeofArray 的char类型的数组的指针。

原文链接: https://www.cnblogs.com/duzouzhe/archive/2010/02/10/1667157.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/8164

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月6日 下午6:50
下一篇 2023年2月6日 下午6:52

相关推荐