Но раз уже ты записал профиль C++, то лови стандартный плюсовый сниппет для получения количества элементов в массиве
template <typename T, size_t N>
inline size_t array_size(T (&)[N]) {return N;}
---
Пользоваться соответственно так:
#include <iostream>
template <typename T, size_t N>
inline size_t array_size(T (&)[N]) {return N;}
int a[10];
struct mystruct {int a, b, c;} b[12];
char c[] = "adfgsdfhsfjshj";
int
main() {
std::cout << array_size(a) << std::endl << array_size(b) << std::endl << array_size(c) << std::endl;
}
---
Самое забавное, что темплейтный вариант позволяет частичным инстанцированием изменить поведение для некоторых типов/размеров массивов.
> Что бы грамотнее было ...? > > _tcscpy_s( dest, sizeof(dest)/sizeof(dest[0]), src); > > или > > _tcscpy_s( dest, sizeof(dest)/sizeof(TCHAR), src); > > Кажется первый вариант чуть лучше. Спасибо.
Что же касается чистого C, то да, лучше привязываться к переменной, а не к ее предполагаемому типу (который запросто может поменяться).
|