Russian Qt Forum

Qt => Общие вопросы => Тема начата: Disa от Август 29, 2012, 10:56



Название: Порядок объявления переменных важен?
Отправлено: 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;


Название: Re: Порядок объявления переменных важен?
Отправлено: andrew.k от Август 29, 2012, 11:10
это магика. мне тоже интересно)


Название: Re: Порядок объявления переменных важен?
Отправлено: Пантер от Август 29, 2012, 11:13
Важен, если читать, допустим из char* через reinterpret_cast.


Название: Re: Порядок объявления переменных важен?
Отправлено: andrew.k от Август 29, 2012, 11:16
Важен, если читать, допустим из char* через reinterpret_cast.
Неужто кутисты так делают?


Название: Re: Порядок объявления переменных важен?
Отправлено: mutineer от Август 29, 2012, 11:24
Скажи хоть где этот класс в сорцах, чтобы посмотреть весь код


Название: Re: Порядок объявления переменных важен?
Отправлено: xokc от Август 29, 2012, 11:28
Могу предположить, что для сериализации QPoint важен порядок. Может на Mac обратный порядок четырехбайтных слов по отношению к другим платформам?
Кстати, в моей версии Qt 5.0.0 от 07.08.12 такого кода нет.


Название: Re: Порядок объявления переменных важен?
Отправлено: Disa от Август 29, 2012, 11:36
Цитировать
Скажи хоть где этот класс в сорцах, чтобы посмотреть весь код
../QtSDK/Simulator/Qt/gcc/include/QtCore


Название: Re: Порядок объявления переменных важен?
Отправлено: mutineer от Август 29, 2012, 11:39
Цитировать
Скажи хоть где этот класс в сорцах, чтобы посмотреть весь код
../QtSDK/Simulator/Qt/gcc/include/QtCore


Это ж не сорцы, это SDK


Название: Re: Порядок объявления переменных важен?
Отправлено: xokc от Август 29, 2012, 11:44
Qt 4.8.2
Qt\4.8.2\src\corelib\tools\qpoint.h


Название: Re: Порядок объявления переменных важен?
Отправлено: andrew.k от Август 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.


Название: Re: Порядок объявления переменных важен?
Отправлено: mutineer от Август 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


Название: Re: Порядок объявления переменных важен?
Отправлено: andrew.k от Август 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
Так это не отвечает на вопрос зачем так делать?
Переставлять в хедере, чтобы потом снова переставлять? Смысл?


Название: Re: Порядок объявления переменных важен?
Отправлено: mutineer от Август 29, 2012, 12:02
Так это не отвечает на вопрос зачем так делать?
Переставлять в хедере, чтобы потом снова переставлять? Смысл?

Ну это отвечает на вопрос зачем в хедере так написано


Название: Re: Порядок объявления переменных важен?
Отправлено: andrew.k от Август 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
}
Так что вопрос зачем, висит в воздухе.


Название: Re: Порядок объявления переменных важен?
Отправлено: mutineer от Август 29, 2012, 12:12
Ты у меня спрашиваешь так, как будто это я написал такой код.
Я и не утверждал что это ответ на Главный Вопрос Этого Топика, просто нашел сопутствующий код. Я могу его выпилить из топика, если он тебя так раздражает своей бесполезностью


Название: Re: Порядок объявления переменных важен?
Отправлено: Disa от Август 29, 2012, 12:25
Код:
Это ж не сорцы, это SDK
Хе-хе) Копифаст такой копифаст, ткунл на соседний файл в поиске.
На маке там же лежит, где и выше написанно :)


Название: Re: Порядок объявления переменных важен?
Отправлено: andrew.k от Август 29, 2012, 13:15
Ты у меня спрашиваешь так, как будто это я написал такой код.
Я и не утверждал что это ответ на Главный Вопрос Этого Топика, просто нашел сопутствующий код. Я могу его выпилить из топика, если он тебя так раздражает своей бесполезностью
спокойно. ничего не раздражает. молодец, что нашел.


Название: Re: Порядок объявления переменных важен?
Отправлено: alex312 от Август 29, 2012, 16:30
Могу предположить, что для сериализации QPoint важен порядок. Может на Mac обратный порядок четырехбайтных слов по отношению к другим платформам?
Кстати, в моей версии Qt 5.0.0 от 07.08.12 такого кода нет.
Возможно это было сделано для маков на PowerPC (http://ru.wikipedia.org/wiki/PowerPC), а сейчас утеряло смысл.


Название: Re: Порядок объявления переменных важен?
Отправлено: andrew.k от Август 29, 2012, 16:32
Могу предположить, что для сериализации QPoint важен порядок. Может на Mac обратный порядок четырехбайтных слов по отношению к другим платформам?
Кстати, в моей версии Qt 5.0.0 от 07.08.12 такого кода нет.
Возможно это было сделано для маков на PowerPC (http://ru.wikipedia.org/wiki/PowerPC), а сейчас утеряло смысл.
Это понятно.
Вопрос в том, какой был этот смысл. Хотя примерно понятно.