#c #windows #std
#c #Windows #std
Вопрос:
Я пришел из мира Mac и довольно новичок в разработке Windows. Очень простой вопрос: какие библиотеки мне нужно включить в Visual Studio 2010, чтобы получить доступ к некоторым базовым функциям, таким как strtof() или snprintf()? Получение ошибок компоновщика для этих … #including <stdlib.h>
, <ctype.h>
, <string.h>
Комментарии:
1. msdn.microsoft.com/en-us/library/abx4dbyh.aspx
2. Оба
strtof
иsnprintf
являются функциями C99, а компилятор C Visual Studio не поддерживает C99. В C99 есть_snprintf
функция<stdio.h>
, которая ведет себя иначе, чем в C99snprintf
.
Ответ №1:
MSVC не поддерживает C99 и только наполовину поддерживает более старые версии стандарта C. snprintf
и strtof
были добавлены в C99 и, следовательно, недоступны.
Комментарии:
1. Только наполовину поддерживает старые версии? Какие части C89 он не поддерживает?
2. Что касается C89, я, кажется, припоминаю, что были какие-то ошибки в препроцессоре, но я не уверен сразу. Что касается более поздних поправок 94/95, попробуйте
wprintf(L"%sn", "hello");
использовать MSVC…3. Ха, я и не знал, что в 94/95 были поправки, я просто думал, что все это было добавлено только в C99. Конечно, я могу поверить, что они несовместимы с этими поправками, но AFAIK, они соответствуют стандарту C89.
4.
wchar_t
были добавлены и связанные с ними функции, но MS их испортила. 🙂 Я думаю, что могут быть и некоторые проблемы с соответствием C89, но, вероятно, не намного хуже, чем у glibc.