169 похожих чатов

Интересно а что в фпц заменяет тогда сишный long int?

29 ответов

68 просмотров

Нет в Си никакого стабильного размера для long int. Есть цепочка размеров: sizeof(char) <= sizeof(int) <= sizeof(long int) <= sizeof(long long int) Есть понятие платформы, для которой в реализации фиксируются те или иные размеры для элементов той цепочки.

Serg
Нет в Си никакого стабильного размера для long int...

а есть компиляторы С (не наколеночные от дяди Васи, а худо бедно распространённые) , чтоб они на одной и тоже платформе задавали разные размеры целочисленных типов ?

Serg
Нет в Си никакого стабильного размера для long int...

в С есть минимальные размеры для типов. и всякие int64_t для тех, кому важен точный размер

Peter- Автор вопроса
Serg
Нет в Си никакого стабильного размера для long int...

Вот именно поэтому и спешиваю какой эквивалент - я же сверху кинул ссылки - по которым видно что long int может как 32 битным быть, так и 64х битным. В дельфи ему соответствует LongInt, в фпц же LongInt - всегда 32хбитный. Вот я и спрашиваю -а какой тип в фпц соответствует long int тогда? Либы сишные как подключать то тогда, если они используют LongInt?

Peter- Автор вопроса
Peter- Автор вопроса
zamtmn
посмотри в uses ctypes;

глянул - ясно на уровне компилятора нет аналога. класс! даже для такой элементарной вещи в юсес тянуть что-то. печаль беда(

Peter- Автор вопроса

ну вот и печально что даже тут надо велосипедить свои типы

Peter
глянул - ясно на уровне компилятора нет аналога. к...

Зачем тянуть? В System есть размерные: Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Peter
глянул - ясно на уровне компилятора нет аналога. к...

паскаль модульный язык, это правильное решение

Peter- Автор вопроса
Serg
Зачем тянуть? В System есть размерные: Int8, Int1...

а long int? он может на линуксе быть как 32х битным, так и 64битным, а на винде всегда - 32 бита, по abi этих систем. в дельфи ему полностью соответствует LongInt, в лазарусе придеться монстрика на ифдефах пилить.

Peter- Автор вопроса
zamtmn
паскаль модульный язык, это правильное решение

какое это тут преимущество дает? кроме очередного велосипедостроения дефолтных фич

Peter- Автор вопроса
Peter
а long int? он может на линуксе быть как 32х битны...

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

Peter- Автор вопроса

Ну я создам тип новый, так? - так, он будет иметь какое-то имя, и если в дельфи по стандартному названию LongInt все очевидно, то тут будет MyMegaInt, от чего пользователь будет вынужден лезть в сорцы и смотреть что это за покемон такой, вместо того чтобы код писать.

Peter
Ну я создам тип новый, так? - так, он будет иметь ...

Ну танцуйте с заменой типа в прототипе каждой функции, кто ж вам запретит

Peter- Автор вопроса
Serg
Ну танцуйте с заменой типа в прототипе каждой функ...

а выбора нет -если си версия использует long int то мы будем вынуждены городить велосипед, из-за того что аналога long int в fpc нет

Peter- Автор вопроса
Peter- Автор вопроса

ну ясно - внятного ответа нет, пошли в ход мемы

Peter
Ну я создам тип новый, так? - так, он будет иметь ...

Это всё ещё забота о новичках? Если нет, то не вижу проблэмс )

Peter- Автор вопроса
notme
Это всё ещё забота о новичках? Если нет, то не виж...

это забота о психическом здоровье пользователя компилятора

Jack128
а есть компиляторы С (не наколеночные от дяди Васи...

Что подразумевается под платформой? Ось или процессор, если проц то есть, с лонгами чехарда

Jack128
ось + проц

В принципе я тебе даж с рабочий чат кидал линк когда 6 разных компилеров, у пяти лонг 4 байта у шестого 8 байт

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта