Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
White OwlПовторяю: размер адреса не обязан совпадать с размером регистра. Считать одним целым регистром быстрее чем половинкой или двумя регистрами, верно? Поэтому использовать тип данных близкий к размеру регистра в качестве счетчиков лучше чем тип данных совпадающий с размером адреса. Хорош уже фантазировать. На всех распространенных платформах размер size_t совпадает с размером регистров. И при этом как минимум на одной из самых распространенных - x86_64 - размер int не совпадает ни с регистрами ни с адресами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2012, 08:41 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
2 Anatoly Moskovsky: Anatoly MoskovskyПо стандарту гарантируется что size_t вмещает любой адрес на данной платформе. Разве? Не путаете с intptr_t/uintptr_t? Просто в 16-битных DOS/Windows было: near-указатели -- 16-битные far-указатели -- 32-битные size_t -- 16-битный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 04:20 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
Пётр Седовfar-указатели -- 32-битные size_t -- 16-битный Объявление FAR-указателя это нестандартное расширение. Поэтому бессмыслено рассматривать взаимосвязь size_t и FAR-указателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 04:57 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
А насчет того intptr_t или size_t пригодны для хранения указателей, то по стандарту это конечно intptr_t. А равенство размеров size_t и intptr_t явно не прописано, но легко выводится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 05:13 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
2 Anatoly Moskovsky: Если при компиляции 16-битной программы указать memory model = large, то все указатели по умолчанию -- far, без всяких нестандартных расширений языка. В такой, вполне себе стандартной, конфигурации: указатели -- 32-битные size_t -- 16-битный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 05:30 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
Пётр Седов, Ну ок. Осталось теперь найти компилятор, который одновременно предоставляет intptr_t и far указатели проверить вмещает ли intptr_t эти указатели :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 06:45 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
А есть какое-то отличие intptr_t от void *? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 14:44 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
отличие intptr_t от void *А есть какое-то отличие intptr_t от void *? По стандарту в intptr_t можно сохранять и получать обратно без потерь любые указатели на объекты или void. Но внутри оно необязательно хранится также как и указатель. Хотя на практике они побитово равны :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 15:27 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyотличие intptr_t от void *А есть какое-то отличие intptr_t от void *? По стандарту в intptr_t можно сохранять и получать обратно без потерь любые указатели на объекты или void. Не совсем понятно тогда зачем он нужен и чем он лучше чем void * и если он может указывать на любые объекты то зачем ещё ввели uintptr_t? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 15:50 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
intptr_t, uintptr_t и void *Не совсем понятно тогда зачем он нужен Затем, что иногда приходится писать грязный код, укладывающий указатели в целые и наоборот. А эти типы - просто переносимый способ выбрать целое, в которое можно безопасно уложить указатель. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2012, 16:10 |
|
||
|
Compile-time способ определения размера статического массива в количестве элементов.
|
|||
|---|---|---|---|
|
#18+
intptr_t, uintptr_t и void *Anatoly Moskovskyпропущено... По стандарту в intptr_t можно сохранять и получать обратно без потерь любые указатели на объекты или void. Не совсем понятно тогда зачем он нужен и чем он лучше чем void * и если он может указывать на любые объекты то зачем ещё ввели uintptr_t? Dimitry Sibiryakov уже написал зачем, а я приведу конкретный пример. Скажем, есть такая структура: Код: plaintext 1. 2. 3. 4. Из-за выравнивания она занимает 8 байт (на 32-битной платформе). Но эту структуру можно «ужать» с помощью следующего трюка. Экземпляры Node1 должны располагаться в памяти выровнено, обычно на 4 байта. Поэтому младший бит указателя на Node1 всегда равен нулю. Этот бит можно использовать для хранения value. Чтобы сделать это максимально переносимо (= кросс-платформенно), нам как раз и понадобится тип uintptr_t: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Такая структура занимает уже 4 байта. Плата за это -- усложнение кода и усложнение отладки (теперь в отладчике просто так не посмотришь значение поля next). У типа uintptr_t есть WinAPI-шный аналог -- UINT_PTR. А зачем ввели ещё знаковый intptr_t (и WinAPI-шный INT_PTR) -- не понимаю, по-моему одного uintptr_t вполне достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2012, 03:32 |
|
||
|
|

start [/forum/search_topic.php?author=ramblk&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 869ms |
| total: | 1194ms |

| 0 / 0 |
