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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы компилятора Microsoft 
V
    Опции темы
ecspertiza
Дата 19.5.2010, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 5



Гуру программеры, объясните мне пожалуйста мне кажется или Microsoft плевала на стандарты?

Есть два компилятора MinGW на базе gcc 4.4.1 и Visual Studio 2008

есть структура данных (это к примеру)

Код

struct s
{
    int i;
    char *q;
    int j;
};


если компилить под MinGW то ф-ция sizeof(s) вернет 16 ,а если скомпилить под студией то почему то 56, это с чего так вдруг?  


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
GoldFinch
Дата 19.5.2010, 20:57 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

Репутация: 15
Всего: 26



ecspertiza, я тоже хотел бы знать где вы там взяли 56

алсо о каких стандартах речь? в стандарте языка не определено выравнивание
PM MAIL ICQ   Вверх
ecspertiza
Дата 19.5.2010, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 5



Я структуру привел просто для примера, холивар тоже разводить не хочу, просто интересно с какой стати?

вот точный код который выводит так инфу

Код

#include <iostream>
#include <time.h>

struct bus_info {
        bus_info() {
                num = 0;
                in = out = 0;
        }
        int num;
        std::string punkt;
        time_t out;
        time_t in;
};

int main(int argc, char *argv[])
{
    std::cout << "size " << sizeof(bus_info) << std::endl;

    return 0;
}


получается что C++ от мелкомягких отличается от общечеловеческого?



--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
djamshud
Дата 19.5.2010, 21:21 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

Репутация: 8
Всего: 39



ecspertiza, получается, что в гцц и мсцпп стлевская строка по-разному реализована.

Добавлено через 1 минуту и 8 секунд
>получается что C++ от мелкомягких отличается от общечеловеческого?

Общечеловеческий - это который аж на одном проценте десктопов? :)


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
ecspertiza
Дата 19.5.2010, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 5



Цитата(djamshud @  19.5.2010,  21:21 Найти цитируемый пост)
Общечеловеческий - это который аж на одном проценте десктопов? smile 


Просто порой возникает ощущение что C++ и Visual С++ это вообще два разных языка программирования, общечеловеческий это тот на котором можно написать софтину и без болезненно перенести на другую платформу.

Это сообщение отредактировал(а) ecspertiza - 19.5.2010, 21:39


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
djamshud
Дата 19.5.2010, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

Репутация: 8
Всего: 39



ecspertiza, это ну никак не про гцц. А вот интеловский компилятор стандартам следует весьма строго.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
GoldFinch
Дата 19.5.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

Репутация: 15
Всего: 26



ecspertiza, 
видимо у вас настроки "Debug".
в этом случае в string включаются дополнительные отладочные члены.

возможно msvc также выделяет место для коротких строк (не уверен)

Добавлено через 1 минуту и 3 секунды
в любом случае, стандарт ничего не говорит про размер string
PM MAIL ICQ   Вверх
ecspertiza
Дата 19.5.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 5



Цитата(GoldFinch @  19.5.2010,  21:43 Найти цитируемый пост)
ecspertiza, 
видимо у вас настроки "Debug".
в этом случае в string включаются дополнительные отладочные члены.


Да действительно в релиз версии, размер структуры 48.


Цитата(djamshud @  19.5.2010,  21:40 Найти цитируемый пост)
ecspertiza, это ну никак не про гцц. А вот интеловский компилятор стандартам следует весьма строго. 


Ну у меня с ним никогда проблем не возникало. А интеловский компилятор под разные платформы? и интересует как он завется.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
djamshud
Дата 19.5.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

Репутация: 8
Всего: 39



Когда пишешь на одном компиляторе, никогда проблем не возникает. Я свой софт под вендой тоже гцц собираю, потому что вижуал студия его не переварит. И не потому, что она плохая, а потому что, что она, что гцц имеют собственное представление о с++, кроме того екстеншены опять же.

http://software.intel.com/en-us/intel-compilers/


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
ecspertiza
Дата 19.5.2010, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 5



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


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
GoldFinch
Дата 19.5.2010, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

Репутация: 15
Всего: 26



используя intel compiler,  надо учитывать что он генерит плохой код для AMD
PM MAIL ICQ   Вверх
djamshud
Дата 19.5.2010, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

Репутация: 8
Всего: 39



GoldFinch, ага. Я его привел в качестве примера очень педантичного компилятора. Еще он очень медленный, и как показали недавние исследования у gcc выигрывал немного только в паре тестов, в остальном - примерно на равных.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
boostcoder
Дата 19.5.2010, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

Репутация: 49
Всего: 110



вставлю своих пять копеек: sizeof(std::string) никак не обязан быть как-то стандартным значением.
а вообще, применять sizeof() можно не ко всем типам...далеко не ко всем.

PM WWW   Вверх
djamshud
Дата 19.5.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


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

Репутация: 8
Всего: 39



boostcoder, можно пример типа, к которму низя применить sizeof?


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
GoldFinch
Дата 19.5.2010, 22:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

Репутация: 15
Всего: 26



djamshud, 
Код

A* p = new B();
sizeof(*p);

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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