LINUX.ORG.RU

Нелогичная логика

 


0

2

Куприв!

Пишу я тут очередной ляс и в процессе компиляции компилятор и даже линковщик(!) выдаёт мне такие предупреждения:

cc -Wall -O2   -c -o sim7600-at.o sim7600-at.c
sim7600-at.c: In function 'simApplicationToolkit':
sim7600-at.c:1013:17: warning: implicit declaration of function 'gets'; did you mean 'fgets'? [-Wimplicit-function-declaration]
 1013 |                 gets( userAns );
      |                 ^~~~
      |                 fgets
cc -s  sim7600-at.o utils_pdu_sms.o   -o sim7600-at
/usr/bin/ld: sim7600-at.o: in function `simApplicationToolkit':
sim7600-at.c:(.text+0xf91): warning: the `gets' function is dangerous and should not be used.

Справедливо, но тогда почему нет подобного предупреждения при использовани strncpy, например, которая тоже дырявая, даже не смотря на n?

★★
Ответ на: комментарий от anonymous

vbr - я тебя понимаю, но ведь в реальном коТе в 99.9% будет:

Тема баланса в реальном коде качества и цены его написания действительно сложная и сводить её к strcpy некорректно. В конце концов написать хоть свою реализацию строк в сколько-нибудь крупном проекте это вообще не проблема. Там и статические анализаторы, к которым уже, наверное, ИИ прикрутили, и всякие подмножества C, включая даже верифицируемые, и вообще другие языки. Плати деньги и будет качество. Нет денег - нанимай меня и я буду через strcpy писать код с багами.

Я лично считаю что самая главная характеристика Си - это то, что он «высокоуровневый ассемблер»(C)… Писать приложухи на нём не надо, только ту часть в них где происходит лютый байтодроЧЪ (кодек к примеру), либо драйверы какие, либо кишки ОС\FS … потому как «настоящий» ЯП там только мешает :)

Ну как бы да. Хотя C далеко не идеальный язык для этого по ряду причин, но лучше ничего нет из популярного. Так что учим 99 функциий из разряда (str|mem).*cpy(_n)?.

Но в ойТи принято есть суп вилкой, это наше всЁ :)

Ну объективно на С уже мало что пишут. Даже в гноме вон vala вроде как не померла, JS местами пользуют, на Rust поглядывают. Что пишут - скорей всего это просто старинный код, который никто переписывать пока не осмеливается. Так что постепенно всё движется к логичному порядку.

vbr ★★★★★
()
Ответ на: комментарий от firkax

GNOME это один из самых популярных проектов, написанных на C, которые я знаю. Причём в нём и новый код на C появляется, к примеру недавно новый эмулятор терминала сделали (Console).

А что в нём убого? Хороший DE, пользуюсь, альтернатив не знаю. Претензии, конечно, есть, но жить можно.

vbr ★★★★★
()
Ответ на: комментарий от vbr

Самый популярный код на Си это ядро а вовсе не гном. Во времена гнома2 он был хорошим, да, а сейчас им пользуются либо по инерции, не удосужившись за 10+ лет посмотреть другие варианты, либо те кто не умеет менять дефолты в каких-нить федорах, либо фанаты макос у которых не хватило денег на макос, но хочется имитации его внешнего вида.

А что в нём убого?

Всё.

альтернатив не знаю.

Ну вот попробуй что угодно, оно окажется лучше.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)