Re: А какой подход по-вашему разумней?
От: x-code  
Дата: 20.02.09 09:42
Оценка: 1 (1) +2
Здравствуйте, Tilir, Вы писали:

T>Возьмём этот вопрос на примере юникодных/анси строк хотя он на самом деле шире.

T>В WinAPI принят такой подход, что все фукции например вида CreateFileXXX (CreateFileA, CreateFileExA, CreateFileW) внутренне вызывают одну функцию CreateFileExW, при необходимости преобразуя в Unicode входные аргументы и добавляя значения по умолчанию при переходе скажем CreateFileW -> CreateFileExW. Ну и все остальные неюникодные функции это делают.
T>В CRT наоборот анси-версии функций скажем strlen полноценно реализованы а не сведены к юникодным скажем strlen могла бы внутренне вызывать wcslen, но не делает этого. Вместо этого по сути дублируется код для юникодной функции.
T>Считаете ли вы из самых общих соображений разумным сдублировать код но сэкономить время на преобразования (время кстати очень существенное по сравнению со временем выполнения той же strlen)?

ИМХО, для функций работы со строками логичнее "дублировать код", т.к. это именно работа со строками как с разными типами данных. На самом деле там нет никакого дублирования, в каждом случае будет разный код. И форматы строк не ограничены ANSI и UNICODE, может быть еще множество форматов строк (BSTR вроде хранит свой размер по смещению -4, и т.д.).

Для операций с файлами работа со строками — не главное, там логичнее иметь единый код, рассчитанный на какую-то строку, и набор "оберток" для других типов строк.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.