Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Лажа в МСДН?

235  
-sh- завсегдатай27.11.17 09:54
NEW 27.11.17 09:54 

МСДН утверждает что

если _MBCS то _tcscpy преобразуется в _mbscpy.

У меня имеется такой МБЦС проэкт.

Так вот когда я ставлю курсор на _tcscpy и нажимаю F12 (goto definition), то я попадаю на строчку: #define _tcscpy strcpy (определенное в tchar.h).

А это не то, что описано в документации: не _mbscpy.

В этом же файле неколько строк выше есть комментарий: /* Note that _mbscat, _mbscpy and _mbsdup are functionally equivalent to

strcat, strcpy and strdup, respectively. */

Однако функция _mbscpy реально существует в другом файле: mbstring.h.

Причем:

strcpy(char*, const char*)

_mbscpy(unsigned char*, const unsigned char*).

Т.е. автоматом strcpy на _mbscpy заменить невозможно, т.к. будет ошибка компиляции: не может преобразовать char* в unsigned char*.

Что за путаница такая? И действительно ли эти функции равнозначны? Если да, то зачем их две?

#1 
Murr патриот27.11.17 10:06
Murr
27.11.17 10:06 
в ответ -sh- 27.11.17 09:54

В МСДН - куча лажи. Напиши билли - может ответят.


Однако функция _mbscpy реально существует в другом файле: mbstring.h

------

Могу спорить на что угодно что функция ТАМ не существует. Заголовок - да, но сама функция где-то в либах или дллках.


Если да, то зачем их две?

-----

Сам же пишешь - не может преобразовать char* в unsigned char*.

Дали тебе другую обертку над memcpy()


#2 
-sh- завсегдатай27.11.17 10:14
NEW 27.11.17 10:14 
в ответ Murr 27.11.17 10:06
Однако функция _mbscpy реально существует в другом файле: mbstring.h ------ Могу спорить на что угодно что функция ТАМ не существует. Заголовок - да, но сама функция где-то в либах или дллках.
ах, не будем к словам придираться. Без этого заголовка эта функция и в либах - можно считать что нету, т.е. не воспользуешься.
Дали тебе другую обертку над memcpy()
вообще-то memcpy работает по другому: ей по-фигу нули.
#3 
Murr патриот27.11.17 10:35
Murr
NEW 27.11.17 10:35 
в ответ -sh- 27.11.17 10:14

ей по-фигу нули.

-----

Да не только нули - ей еще и на МЦБ покласть... только фаулты свистят по логам...


Господя... напиши простой тест - проверь что тебе надо и пользуйся как тебе надо.

Делов-то на 5 минут...


А в различия между char и unsigned char уже наверное никто не смотрит - у всех

давно String...

#4 
-sh- завсегдатай27.11.17 10:47
NEW 27.11.17 10:47 
в ответ Murr 27.11.17 10:35, Последний раз изменено 27.11.17 11:27 (-sh-)

String это в новых проэктах, а тут приходится в старых копаться.

по-моему, мбцс версия ничем не должна отличаться от обычной (ведь мбцс символ не может содержать нуля). Но вдруг я чего не понимаю?! Не зря же Майкрософт заумные макросы напридумала.


#5