我真的很喜欢在VS中使用_countof()宏,我想知道在Qt中是否存在这种OS通用实现。
对于那些不知道的人,_countof()会为您提供数组中元素的数量。所以,
wchar_t buf [256];
_countof(buf)=> 256(字符) sizeof(buf)=> 512(字节)
与unicode字符串一起使用非常好,它可以为你提供字符数。
我希望Qt有一个通用版本。
答案 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。