LINUX.ORG.RU

Стандартен ли long в Си?

 , ,


0

2

Собственно вопрос. Описаны ли стандартом размеры всяких

long
long long
int
double
// И так далее

?
Если описаны, то чему равны их размеры? Или это компиляторозависимая платформоспецифичная особенность и лучше использовать к примеру uint64_t?

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

не пойму тебя в чем твоя проблема — чем тебе енти типы насолили? и почему у меня обязательно должны быть кейсы для их использования? На самом деле есть... но пусть енто все же останется в рамках интриги)))

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

тогда это не компилятор языка программирования с++...

Добро пожаловать в реальный мир. Особенно Embedded контроллеров и всякого DSP.

полнейший бред.

Бред? Ты извиняюсь, вообще крупные и очень круные проекты на С/C++ видел? Например, игр вроде Cyberpunk 2077 (написана на C++, есть утекшие исходники в сети, для общего развития полезно посмотреть как такие проекты делают). А ведь даже компиляция под amd64 в свое время встретила ряд проблем.

так это же учесть библиотек как раз — при чем тут код целевой программы?

Даже не знаю как реагировать. По твоему, вот есть стандартные библиотеки и есть некая «целевая программа», которую пишут с опорой на эти библиотеки? Так это как раз уровень helloworld-ов, каких-то учебных небольших проектов. В крупных проектах вполне обычное дело, когда эти библиотеки под себя переписывают и еще кучу для своих нужд пишут. Потому что в крупных проектах не устраивают людей стандартные. Потому что стандартные рассчитаны на универсальное применение и могут быть недостаточно эффективны в каких-то ситуациях.

И вообще, в чем принципиальная разница между библиотекой и целевой программой? Кстати, написание компилятора - это целевая программа или что?

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

Тут уже привели пример типов для DSP от TI. Стандартен ли long в Си? (комментарий)

type               size (bits)
  ------------------------------
  char               16
  short              16
  int                16
  long               32
  long long          40
  float              32
  double             32
  pointer (data)     16 or 23
  pointer (function) 24

Успехов. Например, универсальную реализацию Radix sort или хэш-функций при таких вводных сделать. По крайней мере эффективную реализацию.

в с++ есть возможность определять такое и действовать в соответствии с нужной политикой, — а так же лучше вообще не делать код зависимым от порядка байт. Даже сложно представить, что в настоящее время может быть предметом такого кода, который зависит от порядка байт и не может быть сделан никак иначе.

Да банально работа с бинарными данными потребует понимать что с порядком байт.

вообще не понял что ты имеешь ввиду.

Есть процессоры, у которых отсутствует стек. Компиляторы Си, конечно могут эмулировать его наличие, но это неэффективно и программы для таких процессоров желательно переписать. Тем более, там скорее всего и другие ограничения имеются, на размер памяти в том числе.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 2)
Ответ на: комментарий от praseodim

Бред? Ты извиняюсь, вообще крупные и очень круные проекты на С/C++ видел? Например, игр вроде Cyberpunk 2077 (написана на C++, есть утекшие исходники в сети, для общего развития полезно посмотреть как такие проекты делают). А ведь даже компиляция под amd64 в свое время встретила ряд проблем.

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

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

Мне кажется, что приводить в качестве примера проприетарную игру несколько некорректно,

Мне хотелось пример современной игры на C++ привести =)

а киберпанк пример вообще феерический, запомнившийся как чуть ли не самая неоптимизированная и тормозная игра.

Мне кажется это в значительной мере просто хейт из-за того, что она на уже не новых приставках PS4 не очень хорошо пошла. Так-то не вижу, чем она сильно жручее до ресурсов, чем многие другие, например, RDR 2

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

игр вроде Cyberpunk 2077

игры вообще с лютыми хаками пишут что бы добиться «более производительного кода» — тупо без всяких проверок, с применением хаков на бинарные сдвиги по структурам данных и многое другое... Там вообще про кроссплатформенность не идет речи обычно просто.
Но это что доказывает что на с++ нельзя писать кроссплатформенный код нормальный? Это лишь какой то пример конкретного плохо написанного ПО.

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

Тут уже привели пример типов для DSP от TI.

не понял юмора — что тут в опровержение моих слов присутствует? Как раз подтврержает мои слова про дабл... Что он не обязательно должен быть 64 битный...

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

Да банально работа с бинарными данными потребует понимать что с порядком байт.

и чо тут понимать то? ты же сам их записываешь прогой... и читаешь... — тоесть знаешь что и как записано...

safocl ★★
()