Russian Qt Forum
Ноябрь 27, 2024, 06:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: В чем отличия разработки приложения 32-x и 64x?  (Прочитано 4854 раз)
Racot
Гость
« : Ноябрь 25, 2012, 11:17 »

Попытался погуглить и не нашел ничего стоящего. Если есть интересные ссылки - прошу в студию!
Записан
ssoft
Гость
« Ответ #1 : Ноябрь 26, 2012, 09:10 »

По моему, нет каких-то различий в разработке.
Есть проблемы совместимости и портирования из-за разной байтовой длины int и указателей.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #2 : Ноябрь 26, 2012, 13:11 »

Ну особенности-то есть, но прямо скажем несущественные. А читать можно тут:
http://habrahabr.ru/company/intel/blog/93831/
http://www.viva64.com/ru/l/

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Ноябрь 26, 2012, 14:13 »

Есть проблемы совместимости и портирования из-за разной байтовой длины int и указателей.
int везде 4 байта. А вот long на OSX 4 байта в 32-бит но 8 байт в 64-бит.

Возвращаясь к вопросу, если программирование сводится к "использованию Qt" - то никаких проблем по существу нет, ну может вылезет что-то, залатаете, теоретическая подготовка необязательна. Под удар портирования попадает низкоуровневый код, обычно старый, напр
Код
C++ (Qt)
write(&myStruct, sizeof(myStruct));
// или
char * mark = (char *)((int)  data & ~1);
// и.т.п.
 
О таких художествах придется горько пожалеть
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #4 : Ноябрь 26, 2012, 17:01 »

Код
C++ (Qt)
write(&myStruct, sizeof(myStruct));
 
О таких художествах придется горько пожалеть
А что не так с этим кодом с точки зрения 64 битной программы?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Ноябрь 26, 2012, 19:32 »

А что не так с этим кодом с точки зрения 64 битной программы?
Формально все так, но вероятность иметь уже др sizeof в 64 битах велика. И если нужно читать старые данные (а обычно да) - тогда "ой"
Записан
Anchorite
Гость
« Ответ #6 : Ноябрь 27, 2012, 09:47 »

int везде 4 байта. А вот long на OSX 4 байта в 32-бит но 8 байт в 64-бит.

В пункте 3.9.1.2 Стандарта сказано следующее:

Цитировать
There are four signed integer types: “signed char”, “short int”, “int”, and “long int.”
In this list, each type provides at least as much storage as those preceding it in the list.
Plain ints have the natural size suggested by the architecture of the execution environment;
the other signed integer types are provided to meet special needs.



в пункте 5.3.1 сказано

Цитировать
The sizeof operator yields the number of bytes in the object representation of its operand.
The operand is either an expression, which is not evaluated, or a parenthesized type-id.
The sizeof operator shall not be applied to an expression that has function or incomplete type,
or to an enumeration type before all its enumerators have been declared,
or to the parenthesized name of such types, or to an lvalue that designates a bit-field.
sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;
the result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined.
[Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined]
[Note: See 1.7 for the definition of byte and 3.9 for the definition of object representation. ]

Поэтому правильнее будет сказать - "int, обычно, 4 байта"
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 22.