Меня немного смущает различие в функциях, которые определены с / без префикса wcs / _w / _mbs.
Например:
Функция fopen открывает файл, указанный в имени файла.
_wfopen — широкоформатная версия fopen; аргументы _wfopen — строки широких символов. В противном случае _wfopen и fopen ведут себя
одинаково.
У меня только что был сомневаюсь, есть ли какая-либо зависимость платформы от окон, связанная с добавлением префикса «_w».
wcscpy и _mbscpy — это, соответственно, широкие и многобайтовые версии strcpy.
Опять есть сомнение, если Добавление «wcs» или «_mbs» зависит от платформы.
РЕДАКТИРОВАТЬ:
WideCharToMultiByte — это не функция времени выполнения C, а Windows
API, следовательно, это зависит от платформы
Он был нестандартным, но был стандартизирован в приложении К11 к К.
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 ++.
различия связаны с исторический
авария.)
wcscpy
является стандартным. _mbcscpy
специфично для MS VC.
Вот почему в начале стоит подчеркивание: имена с начальным подчеркиванием зарезервированы для специфических для реализации вещей.