![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 1 Всего: 5 |
Гуру программеры, объясните мне пожалуйста мне кажется или Microsoft плевала на стандарты?
Есть два компилятора MinGW на базе gcc 4.4.1 и Visual Studio 2008 есть структура данных (это к примеру)
если компилить под MinGW то ф-ция sizeof(s) вернет 16 ,а если скомпилить под студией то почему то 56, это с чего так вдруг? |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
ecspertiza, я тоже хотел бы знать где вы там взяли 56
алсо о каких стандартах речь? в стандарте языка не определено выравнивание |
|||
|
||||
| ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 1 Всего: 5 |
Я структуру привел просто для примера, холивар тоже разводить не хочу, просто интересно с какой стати?
вот точный код который выводит так инфу
получается что C++ от мелкомягких отличается от общечеловеческого? |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 8 Всего: 39 |
ecspertiza, получается, что в гцц и мсцпп стлевская строка по-разному реализована.
Добавлено через 1 минуту и 8 секунд >получается что C++ от мелкомягких отличается от общечеловеческого? Общечеловеческий - это который аж на одном проценте десктопов? :) -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 1 Всего: 5 |
Просто порой возникает ощущение что C++ и Visual С++ это вообще два разных языка программирования, общечеловеческий это тот на котором можно написать софтину и без болезненно перенести на другую платформу. Это сообщение отредактировал(а) ecspertiza - 19.5.2010, 21:39 |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 8 Всего: 39 |
ecspertiza, это ну никак не про гцц. А вот интеловский компилятор стандартам следует весьма строго.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
ecspertiza,
видимо у вас настроки "Debug". в этом случае в string включаются дополнительные отладочные члены. возможно msvc также выделяет место для коротких строк (не уверен) Добавлено через 1 минуту и 3 секунды в любом случае, стандарт ничего не говорит про размер string |
|||
|
||||
| ecspertiza |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 1 Всего: 5 |
Да действительно в релиз версии, размер структуры 48.
Ну у меня с ним никогда проблем не возникало. А интеловский компилятор под разные платформы? и интересует как он завется. |
||||
|
|||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 |
|||
|
||||
| ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 1 Всего: 5 |
Жаль что на переносимость расчитывать не приходится, в любом случае спасибо за разъяснение.
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
используя intel compiler, надо учитывать что он генерит плохой код для AMD
|
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 8 Всего: 39 |
GoldFinch, ага. Я его привел в качестве примера очень педантичного компилятора. Еще он очень медленный, и как показали недавние исследования у gcc выигрывал немного только в паре тестов, в остальном - примерно на равных.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вставлю своих пять копеек: sizeof(std::string) никак не обязан быть как-то стандартным значением.
а вообще, применять sizeof() можно не ко всем типам...далеко не ко всем. |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 8 Всего: 39 |
boostcoder, можно пример типа, к которму низя применить sizeof?
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
djamshud,
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |