|
VS 2017
|
|||
---|---|---|---|
#18+
https://msdn.microsoft.com/en-us/library/2029ea5f.aspx These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT. The secure versions of these functions, gets_s and _getws_s, are still available. For information on these alternative functions, see gets_s, _getws_s. микрософт gets вообще удалил из компилятора, или она таки доступна? Если скомпилировать не для CRT? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 15:18 |
|
VS 2017
|
|||
---|---|---|---|
#18+
https://msdn.microsoft.com/ru-ru/library/2029ea5f.aspx Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT. Безопасные версии этих функций, gets_s и _getws_s, по-прежнему доступны. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 15:21 |
|
VS 2017
|
|||
---|---|---|---|
#18+
сенкс, хотя я не спрашивал что делать )) -- принесли комп с со студией 2017. В студии использование gets подсвечивается как ошибка и проект не компилируется. Соответствующая #pragma якобы не помогает. Это со слов владельца студии, я не проверил. В командной строке через cl.exe *.cpp все компилируется на ура. Изучать свойства проекта для поиска параметров, чтобы компилировалось лень. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 13:43 |
|
VS 2017
|
|||
---|---|---|---|
#18+
gets() выкинули из стандарта http://www.cplusplus.com/reference/cstdio/gets/?kw=gets The most recent revision of the C standard (2011) has definitively removed this function from its specification. The function is deprecated in C++ (as of 2011 standard, which follows C99+TC3). Посмотри в свойствах проекта: General - Platform toolset. Может там можно выбрать CRT для 2013 или старше. Я так понимаю они у тебя есть, раз cl.exe компилирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 13:55 |
|
VS 2017
|
|||
---|---|---|---|
#18+
tchingiz, дефайном через gets_s не пробовал протолкнуть? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2018, 09:01 |
|
VS 2017
|
|||
---|---|---|---|
#18+
kealon(Ruslan)tchingiz, дефайном через gets_s не пробовал протолкнуть? нет. у меня компилятор 2010. Владелец компилятора 2017 пытался мне рассказать, что gets удалена из библиотеки студии 2017 вообще и с ней нельзя скомпилировать приложение. Оказалось, что можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2018, 13:57 |
|
VS 2017
|
|||
---|---|---|---|
#18+
tchingizОказалось, что можно.можно напрямую из CTR звать. Из CRT оно не так скоро пропадёт... А вообще это изврат какой-то... Зачем её было убирать из хедеров (как я понял)? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2018, 05:12 |
|
VS 2017
|
|||
---|---|---|---|
#18+
Действительно, gets - единственная функция, которую выкинули из нового стандарта С, забив на обратную совместимость. The gets() function does not perform bounds checking, therefore this function is extremely vulnerable to buffer-overflow attacks. It cannot be used safely (unless the program runs in an environment which restricts what can appear on stdin). For this reason, the function has been deprecated in the third corrigendum to the C99 standard and removed altogether in the C11 standard. fgets() and gets_s() are the recommended replacements. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2018, 07:17 |
|
VS 2017
|
|||
---|---|---|---|
#18+
CEMb tchingizОказалось, что можно. сишный текст компилирует левой задней ногой. значит сама функция осталось. Ее прототип удалили из заголовков. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
попроверял на http://primat.org/index/0-143 включал опции g++11 и g++14 и на g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright (C) 2017 Для последних версий микрософта есть макрос Код: plaintext 1.
заменяет gets на gets_s и все остальные вызовы функций, которые предекатед. Макрос еще не проверил. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 21:35 |
|
VS 2017
|
|||
---|---|---|---|
#18+
tchingiz, макрос не заменяет, а просто разрешает компилировать небезопасные функции. Добавь что он просит #define ... перед первым #include ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2020, 21:42 |
|
VS 2017
|
|||
---|---|---|---|
#18+
Dima T Добавь что он просит #define ... перед первым #include +1 согласен автор макрос не заменяет, а просто разрешает компилировать небезопасные функции. ты меня не путай, я сам регулярно запутываюсь сначала идет про предупрежденние и как с ним быть, игнорить например. https://docs.microsoft.com/en-us/cpp/c-runtime-library/secure-template-overloads?view=msvc-160 The template overloads provide additional choices. If you define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES to 1, this enables template overloads of standard CRT functions that call the more secure variants automatically. If _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES is 1, then no changes to your code are necessary. Behind the scenes, the call to strcpy is changed to a call to strcpy_s with the size argument supplied automatically. Но перегруженные шаблоны предоставляют дополнительный выбор. Если определите _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES to 1, то будет разрешена автоматическая перегрузка стандартных црт функций шаблонами, которые более безопасны. Установка блабла в 1 позволяет избегть изменений вашего кода. Позади сцены (тышком-нышком) вызов strcpy заменяется на вызов strcpy_s с правильным автоматически подставляемым размером. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 09:46 |
|
VS 2017
|
|||
---|---|---|---|
#18+
tchingizПозади сцены (тышком-нышком) вызов strcpy заменяется на вызов strcpy_s с правильным автоматически подставляемым размером. И какой размер она туда подставит при вызове? Код: sql 1. 2.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 13:51 |
|
VS 2017
|
|||
---|---|---|---|
#18+
tchingiz автор макрос не заменяет, а просто разрешает компилировать небезопасные функции. ты меня не путай, я сам регулярно запутываюсь Я перепутал с _CRT_SECURE_NO_WARNINGS Этот действительно заменяет https://docs.microsoft.com/ru-ru/cpp/c-runtime-library/secure-template-overloads?view=msvc-160 Если _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES имеет значение "1", никаких изменений в коде не требуется. Вызов функции strcpy в фоновом режиме заменяется вызовом функции strcpy_s с автоматической подстановкой аргумента размера. Код: plaintext 1. 2. 3. 4.
... Эти перегрузки шаблонов работают только для статических массивов. Динамически выделенные буферы требуют дополнительных изменений исходного кода. В приведенных выше примерах: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 13:59 |
|
VS 2017
|
|||
---|---|---|---|
#18+
в gcc проблемой с gets якобы можно управлять опцией -std=c++11 -std=c++98 но на моем проверить не удалось Код: plaintext 1. 2. 3. 4.
микрософту до лампочки стандарт до 11 года (то есть, отменить трудности с gets легким способом нельзя), а опция похожая есть https://docs.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version?view=msvc-160 Enable supported C and C++ language features from the specified version of the C or C++ language standard. Syntax /std:c++14 /std:c++17 /std:c++latest /std:c11 /std:c17 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2020, 15:01 |
|
|
start [/forum/topic.php?fid=57&fpage=5&tid=2017285]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 154ms |
0 / 0 |