Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
из племени тумба-юбма
1716 / 1246 / 245
Регистрация: 29.11.2015
Сообщений: 6,010
Записей в блоге: 12
1

Как добавлять в библиотеку отсутствующие функции, типа scanf_s, printf_s ?

09.12.2020, 20:50. Просмотров 1826. Ответов 15
Метки нет (Все метки)

Хочу добавить в библиотеку данные функции, чтоб не исправлять код каждый раз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2020, 20:50
Ответы с готовыми решениями:

Функции gets_s, printf_s и другие с подчеркиванием
Я так понимаю, что все данные функции появились в Visual Studio и являются улучшенным вариантом их...

Как добавлять файлы в поля типа TBlobField?
Есть таблица, сделанная в Database Desktop. Есть программка в Delphi для работы с этой БД. В БД...

Как в приложения asp.net добавлять элементы типа: Edit, Button?
Есть Mono на Arch. Как в приложения asp.net добавлять елементы типа: Edit,Button??

Корректно ли добавлять обработчик исключений в библиотеку классов
Добрый день! У меня вопрос касающийся скорее архитектуры чем самого языка. Пишу ОРС клиент с...

15
425 / 296 / 97
Регистрация: 02.10.2008
Сообщений: 1,139
Записей в блоге: 1
11.12.2020, 15:16 2
Э-э-э... В какую библиотеку? Код функций самописный или выдран из готовых libc и т.п.?
0
из племени тумба-юбма
1716 / 1246 / 245
Регистрация: 29.11.2015
Сообщений: 6,010
Записей в блоге: 12
11.12.2020, 16:15  [ТС] 3
Цитата Сообщение от drfaust Посмотреть сообщение
Э-э-э... В какую библиотеку?
Ну знаю, что можно создать пользовательский файл и указывать его в виде "stdio.h", вместо <stdio.h>, вот про него говорю. А как добить правильно, не знаю.
0
425 / 296 / 97
Регистрация: 02.10.2008
Сообщений: 1,139
Записей в блоге: 1
12.12.2020, 18:53 4
`мама`, сформулируйте проблему яснее. Не могу понять что требуется, в чём затык...
0
из племени тумба-юбма
1716 / 1246 / 245
Регистрация: 29.11.2015
Сообщений: 6,010
Записей в блоге: 12
12.12.2020, 19:35  [ТС] 5
Неужели вправду, так плохо объясняю задачу?
В стандартном файле библиотеки - stdio.h, задаются функции scanf(), printf(). Я хочу создать копию данного файла и добавить в него, допустим функцию scanf_s(). В дальнейшем использовать свой файл библиотеки stdio.h, а не стандартный файл.
0
425 / 296 / 97
Регистрация: 02.10.2008
Сообщений: 1,139
Записей в блоге: 1
12.12.2020, 19:48 6
А-а-а. понятно.
Меня сбаламутило слово "библиотека", которая подразумевает *.lib/dll/s/so/a и т.п.

Делаем свой H-файл вида
C
1
2
3
#include <stdio.h>
 
#include "мои_добавки_к_стд.h" /*или закинуть всё это на штатное место stdio.h - но тогда при каждой обное будем ломаться*/
Ну а в коде да, менять '<>' на ' "" '. Но многие компилеры и среды не делают разницы между ними - в Builder C++ Rio такое есть - они, "борландовцы" вообще чихают на стандарты C и C++...
1
из племени тумба-юбма
1716 / 1246 / 245
Регистрация: 29.11.2015
Сообщений: 6,010
Записей в блоге: 12
12.12.2020, 19:55  [ТС] 7
drfaust
Вы самое главное забыли дописать, какие строки мне надо добавить конкретно, чтоб в моем файле был прописан scanf_s(). Я совсем не знаю синтакиса файла stdio.h.

Добавлено через 32 секунды
потом может еще чего то потребуется добавить
0
152 / 175 / 26
Регистрация: 29.03.2019
Сообщений: 518
14.12.2020, 16:18 8
Цитата Сообщение от мама Стифлера Посмотреть сообщение
какие строки мне надо добавить конкретно,
C
1
2
3
4
5
6
7
8
9
10
/* my_stdio.h */
#ifdnef MY_STDIO_H /* имя вашего заголовка */
#define MY_STDIO_H
 
#include stdio.h
 
/* <...> заменить на ваши */
<type> scanf_s (<params>);
 
#endif /* MY_STDIO_H */
C
1
2
3
4
5
6
7
/* my_stdio.c */
 
<type>
scanf_s (<params>)
{
  /* ваша реализация scanf_s */
}
C
1
2
3
4
5
6
7
8
9
10
/* main.c*/
#include "my_stdio.h"
 
int
main(int argc, char ** argv)
{
  ...
  retval = scanf_s(...); /* вызов функции */
  ...
}
Добавлено через 6 минут
мама Стифлера, описанное выше имеет "небольшой" недостаток. Вам придется постоянно копировать файлы my_stdio.h, my_stdio.c в новые проекты. Есть еще вариант, собрать свою разделяемую/статическую библиотеку, а my_stdio.h кинуть в /usr/include. В таком случае нужно быдет просто линковать библиотеку каждый раз при сборке.
1
из племени тумба-юбма
1716 / 1246 / 245
Регистрация: 29.11.2015
Сообщений: 6,010
Записей в блоге: 12
14.12.2020, 16:49  [ТС] 9
zeroalef, хм..спасибо. Только я не понял, что значит
Цитата Сообщение от zeroalef Посмотреть сообщение
/* <...> заменить на ваши */
Цитата Сообщение от zeroalef Посмотреть сообщение
/* ваша реализация scanf_s */
Должна быть стандартная реализация, которая прописана в файлах VS, (я даже не знаю что там прописано)
И еще, зачем создавать файл "my_stdio.c", что одного "my_stdio.h" не достаточно?

Добавлено через 2 минуты
Что то данный процесс, для меня показался слишком сложным а точнее непонятным
0
152 / 175 / 26
Регистрация: 29.03.2019
Сообщений: 518
14.12.2020, 17:05 10
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Должна быть стандартная реализация, которая прописана в файлах VS
Что мешает использовать ms окружение и не пытаться почесать ухо ногой? Там все эти <funcname>_s доступны искаропки.
Цитата Сообщение от мама Стифлера Посмотреть сообщение
И еще, зачем создавать файл "my_stdio.c", что одного "my_stdio.h" не достаточно?
Функции в заголовках описывать нельзя.
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Что то данный процесс, для меня показался слишком сложным
Это M$ специфические функции. Хотя на SO пишут что опции --std=c11 должно хватить, мой вывод grep -Rn scanf_s /usr/include/ оказался пустым.
0
из племени тумба-юбма
1716 / 1246 / 245
Регистрация: 29.11.2015
Сообщений: 6,010
Записей в блоге: 12
14.12.2020, 17:06  [ТС] 11
Цитата Сообщение от zeroalef Посмотреть сообщение
Что мешает использовать ms окружение и не пытаться почесать ухо ногой?
zeroalef, да я устанавливал VS, в самом начале, когда только начал изучать Си. Потом снес его, из за сложности реализации и специфичности функций, используемых только в VS. Вот подумал, может снова установить и не парится со своими библиотеками? ))
Я за год привык уже к Dev-C++, в нем не нужно создавать отдельный проект для каждого кода, и загружается моментально.
0
152 / 175 / 26
Регистрация: 29.03.2019
Сообщений: 518
14.12.2020, 17:47 12
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Вот подумал, может снова установить и не парится со своими библиотеками?
Дело конечно ваше. Переносимость даже posix совместимого кода часто вызывает зуд, не говоря уже о портировании ms зависимого кода. Лично я не вижу смысла в использовании secure реализаций от ms. Но если вам так уж сильно припёрло, попробуйте явно указать #include "/path/to/microsoft/stdio.h" и ключик -l/path/to/microsoft/libc.dll, хотя мне мало верятно что это сработает.

Добавлено через 48 секунд
Конечно предварительно установив всё необходимое от ms.
0
425 / 296 / 97
Регистрация: 02.10.2008
Сообщений: 1,139
Записей в блоге: 1
14.12.2020, 19:20 13

Не по теме:

Ужас. Я до сих пор не могу понять прблемы....

Вроде бы и далеко "не новичок" пишет, а элементарную проблему - затыки.


Повторю вопрос:
Цитата Сообщение от drfaust Посмотреть сообщение
В какую библиотеку? Код функций самописный или выдран из готовых libc и т.п.?
0
из племени тумба-юбма
1716 / 1246 / 245
Регистрация: 29.11.2015
Сообщений: 6,010
Записей в блоге: 12
14.12.2020, 21:20  [ТС] 14
Цитата Сообщение от drfaust Посмотреть сообщение
Повторю вопрос
drfaust, прошу прощения, я не правильно выразился когда писал:
Цитата Сообщение от мама Стифлера Посмотреть сообщение
Хочу добавить в библиотеку данные функции
Имелось ввиду - Хочу добавить в заголовочный файл данные функции. Я почему то называю эти файлы библиотеками.
Ну и потом мне уже вроде как расписали кучу советов и рекомендаций. Убедили, что если мне это действительно нужно, то лучше просто установить заново VS.
0
425 / 296 / 97
Регистрация: 02.10.2008
Сообщений: 1,139
Записей в блоге: 1
14.12.2020, 21:35 15
scanf_s() - лучше подобрать компилер, который поддерживает стандарт, нежели изобретать велосипед. ИМХО

И да. Что в Си, Что в Си++ хидеры - это только специфика языка - упреждающее объявление функций, типов, классов - излишества "строгой типизации"
0
442 / 224 / 47
Регистрация: 21.09.2008
Сообщений: 780
15.12.2020, 04:59 16
Цитата Сообщение от мама Стифлера Посмотреть сообщение
И еще, зачем создавать файл "my_stdio.c", что одного "my_stdio.h" не достаточно?
Файл my_stdio.h - заголовочный, в нём идут объявления (декларации) параметров структур, прототипов функций (их количество и типы передаваемых параметров, по ним компилятор строит способ передачи параметров через стек в вызываемую функцию). Файл my_stdio.с - собственно раздел реализации (имплементации, как любят выражёвываться некоторые особо продвинутые) указанных в my_stdio.h функций. Т.е. "мухи" и "котлеты" отделены друг от друга. Такой способ позволяет предоставить конечному пользователю (программисту) библиотеки в двоичном коде под определённый компилятор, не раскрывая исходники реализации, при этом описания всех структур, типов аргументов, их количество предоставляются в заголовочном файле.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2020, 04:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка времени выполнения при использовании функции scanf_s
Есть код создания библиотеки книг, это его часть. Если потребуется могу скинуть весь код, но он без...

Как получить библиотеку типа *.tlb из COM-объекта *.exe
Здравствуйте! =) Прошу подсказку у экспертов в COM`е. Можно ли сгенерировать библиотеку типа...

Как правильно добавлять функции в вектор и вызывать их?
Как правильно добавлять функции в вектор и вызывать их? Вот допустим есть вектор std::vector&lt;void...

Как можно создать и добавить библиотеку типа API в залоченное приложение от Alcatel lucent?
Здравствуйте Уважаемые программисты! Пожалуйста, помогите, как можно создать и добавить библиотеку...

Сформировать массив Z, в который включить из X элементы, отсутствующие в Y, а из Y - элементы, отсутствующие в X
В каждом из целочисленных массивов X и Y нет повторяющихся элементов. Сформировать массив Z, в...

Сформировать массив Z, в который включить из X элементы, отсутствующие в Y, а из Y - элементы, отсутствующие в X
В каждом из целочисленных массивов X(n) и Y(m) нет повторяющихся элементов. Сформировать массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.