- 1
- 2
- 3
- 4
int strlenw(const wchar_t *s)
{
return (int)((int)(strlen(s)) % sizeof(wchar_t));
};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+78
int strlenw(const wchar_t *s)
{
return (int)((int)(strlen(s)) % sizeof(wchar_t));
};
Даже и не знаю что сказать. Это было в доставшемся мне проекте. Мне кажется это говнокод.
А так, да, sort of говнокод.
Ещё странно, зачем такая функция вообще нужна (остаток деления строки на длину wchar_t). Чтобы узнать, можно ли представить строку как wchar-строку?
Обычно размер wchar -- два байта. Если остаток от деления длины строки (в char-ах, они же байты) на размер wchar нулевой, значит строка валидная (в ней помещается целое число wchar-ов). Если ненулевой, значит строка кривая.
А вообще я о том, что мне непонятно, зачем эта функция используется.
6 % sizeof(wchar) = 0.
strlen("stringPUMPURUM!") = 15.
15 % sizeof(wchar) = 1.
И?
strlen(L"p\u0x00ff\u0xff00prara-pararam-pam-pam") и посмотри результат.
f.ex.
резалт:
strlen((const char*)param)=1
wcslen((const wchar_t*)param)=36
К тому же если будет символ вида 0x00 0xXX, то strlen выдаст неправильный результат
strlen(s)&1
Но извращение дикое, жаль, что нынче модно такое оправдывать "логичностью" и "читабельностью".
еретик!!
Конечно, в винде иконки есть и службы проводятся.
<\[:|||:]>
Кто из нас дурочко?
Так, что i & 1 - хреновая оптимизация...
Не кросплатформенно...
и не 2 там байта.
Ы)