nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 12:22



Reply to topic  [ 29 posts ]  Go to page Previous  1, 2
Сишные функции работы со строками 
Author Message
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
Вообчето в С(имется в виду язык) никогда не было операций со строками. Все реализуется библиотечными функциями. Единственная фукция это sizeof(*) (поправьте меня). А по поводу строк...
Я в DOS(-оветские времена) нарисовал в ++ класс(С++) работы со сроками.


23 Feb 2015 01:37
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Ну стандартные сишные библиотеки вроде как часть языка (см. стандарт ANSI-C).

А sizeof только размер указателя даст, не размер строки...

_________________
:dj: https://mastodon.social/@Shaos


23 Feb 2015 01:58
Profile WWW
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Если мне нужно было только копирование строки, то я обходился самописными суррогатами и не подключал библиотеку.


23 Feb 2015 02:15
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
Если мне нужно было только копирование строки, то я обходился самописными суррогатами и не подключал библиотеку.

Сорри - но это уж совсем дико, если таковые библиотеки есть. :roll:
А если они есть, то почему их не сделать удобными для пользователя языка?

Я вот, разбираясь с кишками разных процессоров, сделал для себя выводы, почему в ассемблерах
не всё так удобно, как хотелось бы.
Но процессор - железка, ассемблер - низкоуровневый язык для "разговора" с процессором именно
в его терминах.

Собственно, С-то и придумали, чтобы иметь язык с объемом информационного слова покрупнее чем
в ассемблере, хотя но не столь, как в ЯВУ, и не имеющий сильной привязки к типу процессора.

Это и делает С довольно легко переносимым на разные платформы.
Но если есть библиотека - почему б её не написать удобнее, ведь названия и форма вызова
не имеют сильной связи с кодом.
В более поздних С-подобных языках это вполне ведь учли.

У меня лично сильное подозрение, что как в С, так и в Паскале некоторые неудобства имеют место
с целью упрощения компилятора - часть его обязанностей возложили на программиста - пусть сам следит.

_________________
iLavr


23 Feb 2015 07:52
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Lavr wrote:
Сорри - но это уж совсем дико, если таковые библиотеки есть. :roll:
А если они есть, то почему их не сделать удобными для пользователя языка?
Меня это не пугает. Я скотину ножом али топором валю без трепыхания души. Что довольно многим может показаться более диким.

Lavr wrote:
Собственно, С-то и придумали, чтобы иметь язык с объемом информационного слова покрупнее чем
в ассемблере, хотя но не столь, как в ЯВУ, и не имеющий сильной привязки к типу процессора.

И чего-енто мне кажется (крестить ся не буду), что С таки придумали не для того. Была вот у чуваков задачка написать некое обеспечЕние для некоего оборудования, вот и решили написать для коего некую абстракцию, и воплотили оное. А вон оно как обернулось. Да и хрен с имями.
В моём скромном - пользовать абстракцию аки есмь, и приспособлять оную под свои скромные нужды.

P.S. Я отдаю себе отчёт в том, что мои суррогаты порой совсем не оптимальны с точки зрения компиляции и выполнения, но... говнокодерство порой процветает! ;)


23 Feb 2015 09:37
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
Lavr wrote:
Сорри - но это уж совсем дико, если таковые библиотеки есть. :roll:
А если они есть, то почему их не сделать удобными для пользователя языка?
Меня это не пугает. Я скотину ножом али топором валю без трепыхания души.

А я и не говорю, что пугает - я говорю об удобстве.
Есть люди делают кругосветку на велосипедах, воздушных шарах и одиночных яхтах.
Но большинство пользуются автомобилем, самолетом и параходом.

Я, к примеру, могу написать программу в машинных кодах в HEX-редакторе - начинал с этого,
но предочитаю ассемблер с мнемониками, и макросредства тоже очень нефиговы.

Так что я говорю об удобстве прежде всего.

И два чувака думали подумали об своем удобстве, чтобы не писать на ассме - а уж потом:
"вон оно как обернулось". :wink:

Собственно и сам микропроцессор выдумали для удобства - не запиливать большой комплект
ИС в конкретном случае.

_________________
iLavr


23 Feb 2015 09:53
Profile
God

Joined: 02 Jan 2006 02:28
Posts: 1390
Location: Abakan
Reply with quote
Post 
Видимо это связано со стилем жизни. Как это ни странно, но я предпочитаю на велосипеде, в прямом смысле. Надеюсь доделаю монтаж предыдущих заездов, так в курилке ссылки выкложу.


23 Feb 2015 10:51
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
jdigreze wrote:
Как это ни странно, но я предпочитаю на велосипеде, в прямом смысле.

На даче я тоже, бывает, с удовольствием катаюсь на велосипеде.
Но до дачи добираюсь отнюдь не на нем, а уж если в командировку,
то и на поезде езжу. :wink:

Думаю, что в Москву "на велосипеде, в прямом смысле" ты тоже вряд ли предпочитаешь.


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

Но я же не призывал всех как к их ненависти, так и обожествлению? :wink:

_________________
iLavr


23 Feb 2015 11:19
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Я тут надумал поковырять код Best_C на повод как написан компилятор Си, и заодно почитываю
Интернет на вопрос как примерно устроены компиляторы Си.

И вот какой у меня вопрос возник, видимо, к Shaos-у: а почему у Си синтаксис и набор собственных
операторов весьма скромный, а всё делается через библиотеки?

Си ведь даже ввод-вывод не может сделать без библиотек... :-?

_________________
iLavr


05 Dec 2019 11:05
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Ну это наверное к создателям языка надо идти - я в 1992 году принял Си как данность :roll:

_________________
:dj: https://mastodon.social/@Shaos


05 Dec 2019 20:15
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ну тогда подскажи, как в Си назначить синоним функции и можно ли это в принципе?

В VB это делается примерно вот так:
Code:
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


06 Dec 2019 08:59
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
На уровне линкера точка входа в функцию будет называться именем функции с подчёркиванием в начале

Если надо чтобы на уровне программы другая функция называлась иначе в пределах ограниченной области видимости просто делаешь #define NEWNAME OLDNAME ;)

P.S. Если хочется не на уровне компиляции, а динамически по ходу выполнения программы менять функции, которые выполняются из под того же самого места, то можно указатели на функции задействовать...

_________________
:dj: https://mastodon.social/@Shaos


06 Dec 2019 20:30
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
...у меня вопрос возник, видимо, к Shaos-у: а почему у Си синтаксис и набор собственных
операторов весьма скромный, а всё делается через библиотеки?

А Си-шные библиотеки на Си написаны или на целевом ассемблере конкретной машины?

Крутится мысль у меня в голове... вроде умная... никак не родится... :wink:

_________________
iLavr


12 Dec 2019 03:54
Profile
Admin
User avatar

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

_________________
:dj: https://mastodon.social/@Shaos


12 Dec 2019 18:41
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 29 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.