- 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));
};
Даже и не знаю что сказать. Это было в доставшемся мне проекте. Мне кажется это говнокод.
guest 11.01.2010 13:02 # −6.8
Altravert 11.01.2010 13:28 # +1.8
guest 11.01.2010 13:45 # +0.2
guest 11.01.2010 16:33 # +0.2
KoirN 14.01.2010 21:22 # 0
guest 11.01.2010 13:11 # 0
А так, да, sort of говнокод.
guest 11.01.2010 19:39 # +2
guest 12.01.2010 17:38 # 0
Altravert 11.01.2010 13:27 # +1
guest 11.01.2010 14:52 # +1
Ещё странно, зачем такая функция вообще нужна (остаток деления строки на длину wchar_t). Чтобы узнать, можно ли представить строку как wchar-строку?
Altravert 11.01.2010 15:05 # −1
guest 11.01.2010 15:17 # −1
Обычно размер wchar -- два байта. Если остаток от деления длины строки (в char-ах, они же байты) на размер wchar нулевой, значит строка валидная (в ней помещается целое число wchar-ов). Если ненулевой, значит строка кривая.
А вообще я о том, что мне непонятно, зачем эта функция используется.
Altravert 12.01.2010 08:21 # 0
6 % sizeof(wchar) = 0.
strlen("stringPUMPURUM!") = 15.
15 % sizeof(wchar) = 1.
И?
Nex 12.01.2010 14:16 # 0
strlen(L"p\u0x00ff\u0xff00prara-pararam-pam-pam") и посмотри результат.
f.ex.
резалт:
strlen((const char*)param)=1
wcslen((const wchar_t*)param)=36
Altravert 12.01.2010 17:27 # 0
guest 11.01.2010 15:49 # +2
К тому же если будет символ вида 0x00 0xXX, то strlen выдаст неправильный результат
cdta 11.01.2010 20:47 # 0
TarasB 11.01.2010 23:33 # +1
strlen(s)&1
Но извращение дикое, жаль, что нынче модно такое оправдывать "логичностью" и "читабельностью".
guest 12.01.2010 10:22 # −2
guest 12.01.2010 10:57 # 0
guest 12.01.2010 12:14 # −3
guest 12.01.2010 17:48 # +1
guest 13.01.2010 08:14 # +1
еретик!!
guest 13.01.2010 10:46 # +1
guest 13.01.2010 14:02 # 0
Конечно, в винде иконки есть и службы проводятся.
<\[:|||:]>
Altravert 13.01.2010 16:43 # 0
xaionaro 19.02.2010 07:27 # +1
TarasB 13.01.2010 01:24 # 0
Кто из нас дурочко?
guest 13.01.2010 10:48 # +1
Так, что i & 1 - хреновая оптимизация...
Не кросплатформенно...
Altravert 13.01.2010 13:02 # 0
guest 13.01.2010 20:05 # 0
guest 13.01.2010 22:04 # 0
Altravert 14.01.2010 06:10 # 0
guest 11.01.2010 23:51 # 0
Говногость 12.01.2010 13:52 # 0
Nex 12.01.2010 15:43 # 0
Altravert 12.01.2010 17:29 # +1
guest 13.01.2010 14:14 # 0
guest 13.01.2010 15:43 # 0
и не 2 там байта.
Altravert 13.01.2010 16:45 # 0
guest 12.01.2010 17:40 # 0
Altravert 12.01.2010 17:50 # +1
Ы)
guest 13.01.2010 10:54 # 0
guest 07.03.2010 01:03 # +0.2