Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> padding struct to align 
V
    Опции темы
Alca
Дата 24.6.2011, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Ubuntu, g++ 4.5.2

Код

class CUrl {
    public:
        std::string  m_sScheme;
        std::string  m_sUser;
        std::string  m_sPass;
        std::string  m_sHost;
        USHORT     m_usPort;
        std::string  m_sPath; //<<< warning: padding struct to align ‘CUrl::m_sPath’
        std::string  m_sQuery;
        std::string  m_sFragment;

                     CUrl();
        virtual ~CUrl();
    //...
};

CUrl::CUrl() :
    m_sScheme  (),
    m_sUser    (),
    m_sPass    (),
    m_sHost    (),
    m_usPort   (0),
    m_sPath    (),   
    m_sQuery   (),
    m_sFragment()
{
}

CUrl::~CUrl() {
}

Как пофиксить этот ворнинг?

Добавлено @ 12:36
кажись я чего-то не знаю про выравнивание данных в классе (структуре).

Это сообщение отредактировал(а) Alca - 24.6.2011, 12:38


--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 24.6.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Alca

Убери флаг -Wpadded из командной строки. Компилятор просто предупреждает, что данные будут выровнены.
PM   Вверх
Alca
Дата 24.6.2011, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Убери флаг -Wpadded из командной строки.

Так я его спецом  втыкнул, 

Цитата

Компилятор просто предупреждает, что данные будут выровнены.

Это как-то будет влиять скорость или объем занимаемой памяти


--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 24.6.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Alca @  24.6.2011,  13:11 Найти цитируемый пост)
Это как-то будет влиять скорость или объем занимаемой памяти 

возможно, 
Цитата(Alca @  24.6.2011,  13:11 Найти цитируемый пост)
Так я его спецом  втыкнул, 

Ну тогда просто пропусти предупреждение, в данном случае я не вижу как ты от него избавишься.
Если у тебя к примеру есть структура
Код

struct X
{
    short x;
    int y;
    short z;
};

то можно избавиться от выравнивания поменяв местами y и z, но в твоем случае я решения не вижу.

Цитата(Alca @  24.6.2011,  13:11 Найти цитируемый пост)
Это как-то будет влиять скорость или объем занимаемой памяти 

почему тебя это заботит?
PM   Вверх
Alca
Дата 24.6.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

почему тебя это заботит?

Особо не парюсь по поводу производительности, просто хочу знать суть проблемы.
Спасибо.

Добавлено через 30 секунд
Вообще это CGI скрипт


--------------------
PM WWW ICQ Skype Jabber   Вверх
borisbn
Дата 24.6.2011, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(azesmcar @  24.6.2011,  13:15 Найти цитируемый пост)
можно избавиться от выравнивания поменяв местами y и z, но в твоем случае я решения не вижу

а здесь нельзя перекинуть m_usPort в конец ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
azesmcar
Дата 24.6.2011, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(borisbn @  24.6.2011,  13:49 Найти цитируемый пост)
а здесь нельзя перекинуть m_usPort в конец ? 

можно, но что это даст? компилятору все равно придется выронить структуру, так-как рамзер short-а - 2 байта, а выравнивание скорее всего идет на 4 или 8 байт.

PM   Вверх
Alca
Дата 24.6.2011, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

а здесь нельзя перекинуть m_usPort в конец ?

перекидывал - тоже самое


--------------------
PM WWW ICQ Skype Jabber   Вверх
Earnest
Дата 24.6.2011, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



1. сделать usPort размером в 4 байта (если можно)
2. просто отключить локально ворнинг, чтобы глаза не мозолил


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0717 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.