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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Порядок объявления переменных важен?  (Прочитано 8717 раз)
Disa
Гость
« : Август 29, 2012, 10:56 »

В QPoint.h нашел вот:

Код
C++ (Qt)
// ### Qt 5;  remove the ifdef and just have the same order on all platforms.
#if defined(Q_OS_MAC)
   int yp;
   int xp;
#else
   int xp;
   int yp;
#endif

Поясните пж почему тут важен порядок объявления переменных и важно ли тоже самое, если объявлять
Код
C++ (Qt)
int yp, xp;
Записан
andrew.k
Гость
« Ответ #1 : Август 29, 2012, 11:10 »

это магика. мне тоже интересно)
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Август 29, 2012, 11:13 »

Важен, если читать, допустим из char* через reinterpret_cast.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
andrew.k
Гость
« Ответ #3 : Август 29, 2012, 11:16 »

Важен, если читать, допустим из char* через reinterpret_cast.
Неужто кутисты так делают?
Записан
mutineer
Гость
« Ответ #4 : Август 29, 2012, 11:24 »

Скажи хоть где этот класс в сорцах, чтобы посмотреть весь код
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #5 : Август 29, 2012, 11:28 »

Могу предположить, что для сериализации QPoint важен порядок. Может на Mac обратный порядок четырехбайтных слов по отношению к другим платформам?
Кстати, в моей версии Qt 5.0.0 от 07.08.12 такого кода нет.
« Последнее редактирование: Август 29, 2012, 11:31 от xokc » Записан
Disa
Гость
« Ответ #6 : Август 29, 2012, 11:36 »

Цитировать
Скажи хоть где этот класс в сорцах, чтобы посмотреть весь код
../QtSDK/Simulator/Qt/gcc/include/QtCore
Записан
mutineer
Гость
« Ответ #7 : Август 29, 2012, 11:39 »

Цитировать
Скажи хоть где этот класс в сорцах, чтобы посмотреть весь код
../QtSDK/Simulator/Qt/gcc/include/QtCore


Это ж не сорцы, это SDK
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #8 : Август 29, 2012, 11:44 »

Qt 4.8.2
Qt\4.8.2\src\corelib\tools\qpoint.h
Записан
andrew.k
Гость
« Ответ #9 : Август 29, 2012, 11:46 »

Кстати, в моей версии Qt 5.0.0 от 07.08.12 такого кода нет.
Так написано же.
Код
C++ (Qt)
// ### Qt 5;  remove the ifdef and just have the same order on all platforms.
Записан
mutineer
Гость
« Ответ #10 : Август 29, 2012, 11:47 »

На HEAD гиториуса такого кода нету

Его удалили вместе с таким кодом в файле qpaintengine_raster.cpp
Код:
    #ifdef Q_WS_MAC
        for (int i=0; i<count; i+=2) {
            fpoints[i] = ((int *) points)[i+1];
            fpoints[i+1] = ((int *) points)[i];
        }
    #else
       for (int i=0; i<count; ++i)
         fpoints[i] = ((int *) points)[i];
    #endif
« Последнее редактирование: Август 29, 2012, 11:49 от mutineer » Записан
andrew.k
Гость
« Ответ #11 : Август 29, 2012, 11:57 »

На HEAD гиториуса такого кода нету

Его удалили вместе с таким кодом в файле qpaintengine_raster.cpp
Код:
    #ifdef Q_WS_MAC
        for (int i=0; i<count; i+=2) {
            fpoints[i] = ((int *) points)[i+1];
            fpoints[i+1] = ((int *) points)[i];
        }
    #else
       for (int i=0; i<count; ++i)
         fpoints[i] = ((int *) points)[i];
    #endif
Так это не отвечает на вопрос зачем так делать?
Переставлять в хедере, чтобы потом снова переставлять? Смысл?
Записан
mutineer
Гость
« Ответ #12 : Август 29, 2012, 12:02 »

Так это не отвечает на вопрос зачем так делать?
Переставлять в хедере, чтобы потом снова переставлять? Смысл?

Ну это отвечает на вопрос зачем в хедере так написано
Записан
andrew.k
Гость
« Ответ #13 : Август 29, 2012, 12:09 »

Так это не отвечает на вопрос зачем так делать?
Переставлять в хедере, чтобы потом снова переставлять? Смысл?

Ну это отвечает на вопрос зачем в хедере так написано
Зачем так делать?
Код
C++ (Qt)
struct Test
{
  int a;
  int b;
  #ifdef Q_WS_MAC
  int macC;
  #else
  int notMacC;
  #endif
};
}
Ответ. Для этого:
Код
C++ (Qt)
{
#ifdef Q_WS_MAC
  macC = a + b;
#else
  notMacC = a + b;
#endif
}
Так что вопрос зачем, висит в воздухе.
Записан
mutineer
Гость
« Ответ #14 : Август 29, 2012, 12:12 »

Ты у меня спрашиваешь так, как будто это я написал такой код.
Я и не утверждал что это ответ на Главный Вопрос Этого Топика, просто нашел сопутствующий код. Я могу его выпилить из топика, если он тебя так раздражает своей бесполезностью
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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