Qt реализует _countof или эквивалент? - PullRequest
0 голосов
/ 02 октября 2010

Мне действительно нравится использовать макрос _countof () в VS, и мне интересно, есть ли в Qt общая реализация для ОС.

Для тех, кто не знает, _countof () дает вам количество элементов в массиве. так,

wchar_t buf [256];

_countof (buf) => 256 (символы) sizeof (buf) => 512 (байт)

Это очень удобно для использования, скажем, со строками юникода, где он дает вам количество символов.

Я надеюсь, что у Qt есть универсальная версия.

Ответы [ 2 ]

1 голос
/ 02 октября 2010

_countof, вероятно, определяется следующим образом:

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

Вы можете использовать такое определение для любого компилятора и ОС.

Если Qt не предоставляет такой макрос, вы можете просто определить собственный макрос в одном из ваших заголовочных файлов.

0 голосов
/ 09 сентября 2012
Код

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

Более подробное описание этого решения дано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...