Самое забавное, что темплейтный вариант позволяет частичным инстанцированием изменить поведение для некоторых типов/размеров массивов.
> Что бы грамотнее было ...? > > _tcscpy_s( dest, sizeof(dest)/sizeof(dest[0]), src); > > или > > _tcscpy_s( dest, sizeof(dest)/sizeof(TCHAR), src); > > Кажется первый вариант чуть лучше. Спасибо.
Что же касается чистого C, то да, лучше привязываться к переменной, а не к ее предполагаемому типу (который запросто может поменяться).
Кстати, почему-то не хочет компилироваться в VC 6 :23.08.06 05:19 Автор: void <Grebnev Valery> Статус: Elderman
> Что бы грамотнее было ...? > > _tcscpy_s( dest, sizeof(dest)/sizeof(dest[0]), src); > > или > > _tcscpy_s( dest, sizeof(dest)/sizeof(TCHAR), src); > > Кажется первый вариант чуть лучше. Спасибо.
Предпочитаю первый вариант, а именно размер элемента, а не размер типа.
Какие баги это позволяет избежать - вдруг, через какое-то время стало нехватать размерности элемента; нужно незабыть поменять везде типы; а если где-то забыл... Суть-то все-равно малоразличима. Было б наверное неплохо на уровне с sizeof иметь typeof, которая вернет размерность типа массива или numof, которая вернет количество элементов.
typeof есть :-)21.08.06 15:13 Автор: amirul <Serge> Статус: The Elderman
> все-равно малоразличима. Было б наверное неплохо на уровне > с sizeof иметь typeof, которая вернет размерность типа > массива или numof, которая вернет количество элементов.
typeof есть :-)
Правда называется typeid и предназначен для получения динамической информации ТОЛЬКО абстрактных типов.
Всю статическую информацию о типе можно вытащить при помощи шаблонов (посмотри например на stlport-овский stl/type_traits.h)