& Quot; WCS & Quot; и & quot; _w & quot; и & quot; _mbs & quot; префикс в Visual Studio

Меня немного смущает различие в функциях, которые определены с / без префикса wcs / _w / _mbs.
Например:

  • Еореп () _ wfopen ()
    На мсдн дано что:

Функция fopen открывает файл, указанный в имени файла.
_wfopen — широкоформатная версия fopen; аргументы _wfopen — строки широких символов. В противном случае _wfopen и fopen ведут себя
одинаково.

У меня только что был сомневаюсь, есть ли какая-либо зависимость платформы от окон, связанная с добавлением префикса «_w».

  • зЬгср (), wcscpy () _ mbscpy ()
    На мсдн дано что:

wcscpy и _mbscpy — это, соответственно, широкие и многобайтовые версии strcpy.

Опять есть сомнение, если Добавление «wcs» или «_mbs» зависит от платформы.

РЕДАКТИРОВАТЬ:

  • Является WideCharToMultiByte функция также зависит от платформы?

WideCharToMultiByte — это не функция времени выполнения C, а Windows
API, следовательно, это зависит от платформы

  • Точно так же wcstombs_s функция также зависит от платформы?

Он был нестандартным, но был стандартизирован в приложении К11 к К.

0

Решение

wcs* функции как wcscpy являются частью стандартной библиотеки C _wfopen функция и прочее _w* функции являются расширениями, как и многобайтовые строковые функции, такие как _mbscpy,

По большей части функции Visual C ++ C Runtime (CRT), которые имеют начальное подчеркивание, являются расширениями; функции, которые не имеют начального подчеркивания, являются частью стандартной библиотеки C.

Есть два основных исключения, где расширения могут не иметь начальных подчеркиваний:

  • Существует несколько функций расширения, объявленных с префиксом подчеркивания, которые имеют псевдонимы без префиксов для обратной совместимости с исходным кодом. Эти псевдонимы устарели, и если вы попытаетесь их использовать, вы получите предупреждение об исключении устаревания (C4996).

  • Есть _sнадежные альтернативные функции для некоторых функций стандартной библиотеки C, например, scanf_s, Они объявлены по умолчанию, но их объявления могут быть подавлены путем определения макроса __STDC_WANT_SECURE_LIB__ иметь значение 0.

    (Эти функции были фактически добавлены к C11 в дополнительном Приложении K,
    но обратите внимание, что есть несколько различий между тем, что указано
    в стандарте C и что реализовано в Visual C ++.
    различия связаны с исторический
    авария
    .)

7

Другие решения

wcscpy является стандартным. _mbcscpy специфично для MS VC.

Вот почему в начале стоит подчеркивание: имена с начальным подчеркиванием зарезервированы для специфических для реализации вещей.

2

По вопросам рекламы [email protected]