Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Intel C++ Compiler

Автор: xSWRx
Дата сообщения: 07.05.2007 17:15
Кто нить пробовал компилить на ICC из VC2005 в висте.
У меня создаются дохлые процессы и все.
Студия пишет что проект откомпилен.
Сам компилятор запускается нормально - но из под студии нехотит.
Автор: Qraizer
Дата сообщения: 08.05.2007 14:10
ICC - это для linux-а. Для wind-ов ICL
Автор: xSWRx
Дата сообщения: 10.05.2007 12:35
Тогда ICL не работает.
Похоже Dll которая интегрируется в студию от Intel создает
преостановленные процессы и не запускает их.
Автор: A_S_T_E_R_I_X
Дата сообщения: 27.10.2007 19:15
Подскажите пожалуйста
добавил ключик для поддержки 80bit long double в командную строку
(/Qlong-double enable 80-bit 'long double')
в итоге имеем sizeof(long double) = 16

почему 16 а не 10 ? Баг ?
Автор: Abs62
Дата сообщения: 27.10.2007 20:22
A_S_T_E_R_I_X

Цитата:
почему 16 а не 10 ? Баг ?

Нет, фича.

Цитата:
The /Qlong-double option changes a long-double to an 80-bit data type. However,
the alignment requirement of the data type is 16 bytes, and its size must be a multiple of
its alignment, so the sizeof a long-double on Windows is 16 bytes as well. Only the
lower 10 bytes (80 bits) of the 16 byte space will have valid data stored in it.

Автор: A_S_T_E_R_I_X
Дата сообщения: 27.10.2007 21:19
дурная фича, а если данные размера long double входят в структуру
и из-за их размера перебабахивается вся структура, и из-нее уже нельзя получить
валидные значения, это нормально?
Автор: Abs62
Дата сообщения: 27.10.2007 22:22
A_S_T_E_R_I_X
Что значит перебабахивается? INTEL английским языком предупреждает:

Цитата:
Furthermore, Microsoft libraries (such as printf) do not support long-double, so
long doubles can only be passed to user written routines.

Нужна совместимость - не надо включать эту опцию. И непринципиально, 10 байт в long double или 16 - всё равно этот тип поймут только функции модулей, с данным ключом откомпилированных.
Автор: A_S_T_E_R_I_X
Дата сообщения: 28.10.2007 01:33
Abs62
есть структура в чужих заголовочных файлах и в ней есть элементы
размером long double, известно что правильная структура будет только
при long double = 10 байт, во всех остальных случаях элементы смещаются

физически структура эта в другом модуле, и соответственно если при компиляции
размеры неправильные то структура не работает, считываются неверные значения

вобщем ищу обходные пути не трогая хидера поправить эту ситуацию
Автор: Abs62
Дата сообщения: 28.10.2007 13:14
A_S_T_E_R_I_X

Цитата:
вобщем ищу обходные пути не трогая хидера поправить эту ситуацию

Взять компилятор, у которого sizeof(long double)=10. Ибо согласно п.3.9.1 Стандарта "The value representation of floating-point types is implementation-defined".
Автор: alco_H
Дата сообщения: 29.10.2007 21:30
A_S_T_E_R_I_X Читай внимательно документацию по intel-овскому компилятору - там есть опция, которая делает long double 80битным (типа /Qlong_double).
Автор: A_S_T_E_R_I_X
Дата сообщения: 30.10.2007 00:47
alco_H
нет, это вы читайте внимательно несколькими постами выше, интел не подошел

чтоб не портить сторонний хидер пришлось объявить свои две структуры
аналогичные оригинальным и в одной из них заменить long double
на LONG_DOUBLE

typedef struct LONG_DOUBLE {
char buff[10];
} LONG_DOUBLE;

посмотрим может в будущем MS в 9й версии компилятора добавит поддержку
нормального long double
Автор: Qraizer
Дата сообщения: 31.10.2007 20:14
Не-а, не добавит. Наоборот, раньше он был, а теперь его убрали.
Автор: A_S_T_E_R_I_X
Дата сообщения: 31.10.2007 22:10
Qraizer
в парочке блогов работников MS попадалась инфа о том что могут добавить
Автор: Qraizer
Дата сообщения: 03.11.2007 22:20
Ой, что-то не верится. Они ж убрали специально, чтоб не мучиться его поддержкой на платформах, где его в натуре нету. А Win32 - она ж не только на Intel-е, ещё Alpha, MIPS, PPC итп. Впрочем, если-таки добавят, я буду только рад.

Страницы: 123

Предыдущая тема: Убрать фон с фотографии


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.