Qt实现_countof或同等的?

时间:2010-10-01 21:05:15

标签: qt

我真的很喜欢在VS中使用_countof()宏,我想知道在Qt中是否存在这种OS通用实现。

对于那些不知道的人,_countof()会为您提供数组中元素的数量。所以,

wchar_t buf [256];

_countof(buf)=> 256(字符) sizeof(buf)=> 512(字节)

与unicode字符串一起使用非常好,它可以为你提供字符数。

我希望Qt有一个通用版本。

2 个答案:

答案 0 :(得分:1)

_countof可能定义如下:

#define _countof(arr) (sizeof(arr) / sizeof((arr)[0]))

您可以对任何编译器和操作系统使用这样的定义。

如果Qt没有提供这样的宏,你可以在一个头文件中自己定义一个自定义宏。

答案 1 :(得分:0)

sth的代码可以正常工作,但是当你试图获得指针大小而不是数组时,它将无法检测到。 MS解决方案执行此操作(如danielweberdlc所述),但可以将其作为C ++的标准解决方案:

#if defined(Q_OS_WIN)
  #define ARRAYLENGTH(x) _countof(x)
#else // !Q_OS_WIN
  template< typename T, std::size_t N > 
  inline std::size_t ARRAYLENGTH(T(&)[N]) { return N; }
#endif // !Q_OS_WIN

此解决方案的更详细说明是here