Сишные функции работы со строками
Moderator: Shaos
-
- Maniac
- Posts: 287
- Joined: 05 Nov 2008 19:47
- Location: 81.28.208.238
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Сорри - но это уж совсем дико, если таковые библиотеки есть.jdigreze wrote:Если мне нужно было только копирование строки, то я обходился самописными суррогатами и не подключал библиотеку.

А если они есть, то почему их не сделать удобными для пользователя языка?
Я вот, разбираясь с кишками разных процессоров, сделал для себя выводы, почему в ассемблерах
не всё так удобно, как хотелось бы.
Но процессор - железка, ассемблер - низкоуровневый язык для "разговора" с процессором именно
в его терминах.
Собственно, С-то и придумали, чтобы иметь язык с объемом информационного слова покрупнее чем
в ассемблере, хотя но не столь, как в ЯВУ, и не имеющий сильной привязки к типу процессора.
Это и делает С довольно легко переносимым на разные платформы.
Но если есть библиотека - почему б её не написать удобнее, ведь названия и форма вызова
не имеют сильной связи с кодом.
В более поздних С-подобных языках это вполне ведь учли.
У меня лично сильное подозрение, что как в С, так и в Паскале некоторые неудобства имеют место
с целью упрощения компилятора - часть его обязанностей возложили на программиста - пусть сам следит.
iLavr
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
Меня это не пугает. Я скотину ножом али топором валю без трепыхания души. Что довольно многим может показаться более диким.Lavr wrote:Сорри - но это уж совсем дико, если таковые библиотеки есть.![]()
А если они есть, то почему их не сделать удобными для пользователя языка?
И чего-енто мне кажется (крестить ся не буду), что С таки придумали не для того. Была вот у чуваков задачка написать некое обеспечЕние для некоего оборудования, вот и решили написать для коего некую абстракцию, и воплотили оное. А вон оно как обернулось. Да и хрен с имями.Lavr wrote:Собственно, С-то и придумали, чтобы иметь язык с объемом информационного слова покрупнее чем
в ассемблере, хотя но не столь, как в ЯВУ, и не имеющий сильной привязки к типу процессора.
В моём скромном - пользовать абстракцию аки есмь, и приспособлять оную под свои скромные нужды.
P.S. Я отдаю себе отчёт в том, что мои суррогаты порой совсем не оптимальны с точки зрения компиляции и выполнения, но... говнокодерство порой процветает!

-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
А я и не говорю, что пугает - я говорю об удобстве.jdigreze wrote:Меня это не пугает. Я скотину ножом али топором валю без трепыхания души.Lavr wrote:Сорри - но это уж совсем дико, если таковые библиотеки есть.![]()
А если они есть, то почему их не сделать удобными для пользователя языка?
Есть люди делают кругосветку на велосипедах, воздушных шарах и одиночных яхтах.
Но большинство пользуются автомобилем, самолетом и параходом.
Я, к примеру, могу написать программу в машинных кодах в HEX-редакторе - начинал с этого,
но предочитаю ассемблер с мнемониками, и макросредства тоже очень нефиговы.
Так что я говорю об удобстве прежде всего.
И два чувака думали подумали об своем удобстве, чтобы не писать на ассме - а уж потом:
"вон оно как обернулось".

Собственно и сам микропроцессор выдумали для удобства - не запиливать большой комплект
ИС в конкретном случае.
iLavr
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
На даче я тоже, бывает, с удовольствием катаюсь на велосипеде.jdigreze wrote:Как это ни странно, но я предпочитаю на велосипеде, в прямом смысле.
Но до дачи добираюсь отнюдь не на нем, а уж если в командировку,
то и на поезде езжу.

Думаю, что в Москву "на велосипеде, в прямом смысле" ты тоже вряд ли предпочитаешь.
Но что-то мы далеко ушли от неудобных строковых функций С со всеми этими аналогиями.
Я же начал топик со следующего:
Но я же не призывал всех как к их ненависти, так и обожествлению?Lavr wrote:Вот что я ненавижу в С - так это строковые функции...

iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Сишные функции работы со строками
Я тут надумал поковырять код Best_C на повод как написан компилятор Си, и заодно почитываю
Интернет на вопрос как примерно устроены компиляторы Си.
И вот какой у меня вопрос возник, видимо, к Shaos-у: а почему у Си синтаксис и набор собственных
операторов весьма скромный, а всё делается через библиотеки?
Си ведь даже ввод-вывод не может сделать без библиотек...
Интернет на вопрос как примерно устроены компиляторы Си.
И вот какой у меня вопрос возник, видимо, к Shaos-у: а почему у Си синтаксис и набор собственных
операторов весьма скромный, а всё делается через библиотеки?
Си ведь даже ввод-вывод не может сделать без библиотек...

iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Сишные функции работы со строками
Ну это наверное к создателям языка надо идти - я в 1992 году принял Си как данность 

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Сишные функции работы со строками
Ну тогда подскажи, как в Си назначить синоним функции и можно ли это в принципе?
В VB это делается примерно вот так:
Перерыл кучу интернета и ничего не нашел на этот повод.
Нашел, что можно назначить синоним типу данных, но это я и так знал.
В VB это делается примерно вот так:
Code: Select all
Declare Function Out Lib "portio.dll" Alias "PUTByteOut" (ByVal port%, ByVal pdata%) As Integer
Declare Function Inp Lib "portio.dll" Alias "GETByteIn" (ByVal port%) As Integer

Нашел, что можно назначить синоним типу данных, но это я и так знал.
iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Сишные функции работы со строками
На уровне линкера точка входа в функцию будет называться именем функции с подчёркиванием в начале
Если надо чтобы на уровне программы другая функция называлась иначе в пределах ограниченной области видимости просто делаешь #define NEWNAME OLDNAME
P.S. Если хочется не на уровне компиляции, а динамически по ходу выполнения программы менять функции, которые выполняются из под того же самого места, то можно указатели на функции задействовать...
Если надо чтобы на уровне программы другая функция называлась иначе в пределах ограниченной области видимости просто делаешь #define NEWNAME OLDNAME

P.S. Если хочется не на уровне компиляции, а динамически по ходу выполнения программы менять функции, которые выполняются из под того же самого места, то можно указатели на функции задействовать...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Сишные функции работы со строками
А Си-шные библиотеки на Си написаны или на целевом ассемблере конкретной машины?Lavr wrote:...у меня вопрос возник, видимо, к Shaos-у: а почему у Си синтаксис и набор собственных
операторов весьма скромный, а всё делается через библиотеки?
Крутится мысль у меня в голове... вроде умная... никак не родится...

iLavr
-
- Admin
- Posts: 24080
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Сишные функции работы со строками
Ну кто как пишет - главное чтобы стандарту соответствовало 
Например в newlib из линуха всё на сях написано для портабельности
А вот например в версии GCC для микроспарков все функции пересылок были переписаны на ассемблере спарка, чтобы по 64-битной шине сразу по 8 байт данных кидать за раз...

Например в newlib из линуха всё на сях написано для портабельности
А вот например в версии GCC для микроспарков все функции пересылок были переписаны на ассемблере спарка, чтобы по 64-битной шине сразу по 8 байт данных кидать за раз...
Я тут за главного - если что шлите мыло на me собака shaos точка net