Author |
Message |
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Вообчето в С(имется в виду язык) никогда не было операций со строками. Все реализуется библиотечными функциями. Единственная фукция это sizeof(*) (поправьте меня). А по поводу строк...
Я в DOS(-оветские времена) нарисовал в ++ класс(С++) работы со сроками.
|
23 Feb 2015 01:37 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Ну стандартные сишные библиотеки вроде как часть языка (см. стандарт ANSI-C).
А sizeof только размер указателя даст, не размер строки...
|
23 Feb 2015 01:58 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Если мне нужно было только копирование строки, то я обходился самописными суррогатами и не подключал библиотеку.
|
23 Feb 2015 02:15 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Сорри - но это уж совсем дико, если таковые библиотеки есть.
А если они есть, то почему их не сделать удобными для пользователя языка?
Я вот, разбираясь с кишками разных процессоров, сделал для себя выводы, почему в ассемблерах
не всё так удобно, как хотелось бы.
Но процессор - железка, ассемблер - низкоуровневый язык для "разговора" с процессором именно
в его терминах.
Собственно, С-то и придумали, чтобы иметь язык с объемом информационного слова покрупнее чем
в ассемблере, хотя но не столь, как в ЯВУ, и не имеющий сильной привязки к типу процессора.
Это и делает С довольно легко переносимым на разные платформы.
Но если есть библиотека - почему б её не написать удобнее, ведь названия и форма вызова
не имеют сильной связи с кодом.
В более поздних С-подобных языках это вполне ведь учли.
У меня лично сильное подозрение, что как в С, так и в Паскале некоторые неудобства имеют место
с целью упрощения компилятора - часть его обязанностей возложили на программиста - пусть сам следит.
_________________ iLavr
|
23 Feb 2015 07:52 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Меня это не пугает. Я скотину ножом али топором валю без трепыхания души. Что довольно многим может показаться более диким.
И чего-енто мне кажется (крестить ся не буду), что С таки придумали не для того. Была вот у чуваков задачка написать некое обеспечЕние для некоего оборудования, вот и решили написать для коего некую абстракцию, и воплотили оное. А вон оно как обернулось. Да и хрен с имями.
В моём скромном - пользовать абстракцию аки есмь, и приспособлять оную под свои скромные нужды.
P.S. Я отдаю себе отчёт в том, что мои суррогаты порой совсем не оптимальны с точки зрения компиляции и выполнения, но... говнокодерство порой процветает!
|
23 Feb 2015 09:37 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А я и не говорю, что пугает - я говорю об удобстве.
Есть люди делают кругосветку на велосипедах, воздушных шарах и одиночных яхтах.
Но большинство пользуются автомобилем, самолетом и параходом.
Я, к примеру, могу написать программу в машинных кодах в HEX-редакторе - начинал с этого,
но предочитаю ассемблер с мнемониками, и макросредства тоже очень нефиговы.
Так что я говорю об удобстве прежде всего.
И два чувака думали подумали об своем удобстве, чтобы не писать на ассме - а уж потом:
"вон оно как обернулось".
Собственно и сам микропроцессор выдумали для удобства - не запиливать большой комплект
ИС в конкретном случае.
_________________ iLavr
|
23 Feb 2015 09:53 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Видимо это связано со стилем жизни. Как это ни странно, но я предпочитаю на велосипеде, в прямом смысле. Надеюсь доделаю монтаж предыдущих заездов, так в курилке ссылки выкложу.
|
23 Feb 2015 10:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
На даче я тоже, бывает, с удовольствием катаюсь на велосипеде. Но до дачи добираюсь отнюдь не на нем, а уж если в командировку, то и на поезде езжу. Думаю, что в Москву " на велосипеде, в прямом смысле" ты тоже вряд ли предпочитаешь. Но что-то мы далеко ушли от неудобных строковых функций С со всеми этими аналогиями. Я же начал топик со следующего:
Но я же не призывал всех как к их ненависти, так и обожествлению?
_________________ iLavr
|
23 Feb 2015 11:19 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я тут надумал поковырять код Best_C на повод как написан компилятор Си, и заодно почитываю Интернет на вопрос как примерно устроены компиляторы Си. И вот какой у меня вопрос возник, видимо, к Shaos-у: а почему у Си синтаксис и набор собственных операторов весьма скромный, а всё делается через библиотеки? Си ведь даже ввод-вывод не может сделать без библиотек...
_________________ iLavr
|
05 Dec 2019 11:05 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Ну это наверное к создателям языка надо идти - я в 1992 году принял Си как данность
|
05 Dec 2019 20:15 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну тогда подскажи, как в Си назначить синоним функции и можно ли это в принципе? В VB это делается примерно вот так: Перерыл кучу интернета и ничего не нашел на этот повод. Нашел, что можно назначить синоним типу данных, но это я и так знал.
_________________ iLavr
|
06 Dec 2019 08:59 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
На уровне линкера точка входа в функцию будет называться именем функции с подчёркиванием в начале Если надо чтобы на уровне программы другая функция называлась иначе в пределах ограниченной области видимости просто делаешь #define NEWNAME OLDNAME P.S. Если хочется не на уровне компиляции, а динамически по ходу выполнения программы менять функции, которые выполняются из под того же самого места, то можно указатели на функции задействовать...
|
06 Dec 2019 20:30 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А Си-шные библиотеки на Си написаны или на целевом ассемблере конкретной машины? Крутится мысль у меня в голове... вроде умная... никак не родится...
_________________ iLavr
|
12 Dec 2019 03:54 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Ну кто как пишет - главное чтобы стандарту соответствовало Например в newlib из линуха всё на сях написано для портабельности А вот например в версии GCC для микроспарков все функции пересылок были переписаны на ассемблере спарка, чтобы по 64-битной шине сразу по 8 байт данных кидать за раз...
|
12 Dec 2019 18:41 |
|
|