BCB6 - union / struct Bug
От: Здоровый Бык Россия  
Дата: 15.10.05 08:53
Оценка:
BCB6 подозревается на наличие серьёзного бага в компиляторе.

Просьба проверить, если есть возможность.

Создайте простой проект консольного приложения в BCB6.

Создайте в проекте заголовочный файл следующего содержания:

//-----
#ifndef __BugDeclaration__
#define __BugDeclaration__

// !!!THIS STRUCTURE DEFINITION BREAKS COMPILATION PROCESS!!!
typedef struct
{
union
{
struct
{
union
{
short A; // as short
struct
{
unsigned char Alo; // as byte + byte
unsigned char Ahi;
};
};
union
{
short B;
struct
{
unsigned char Blo;
unsigned char Bhi;
};
};
};
float FloatParam;
int IntParam;
};
unsigned char FunRecordType;
} FUN_RECORD;
#endif

//-----

Включите этот файл в основной юнит директивой #include
и запустите компиляцию.

BCB6 бодро отрапортует: "Done: Build All", но экзешник не соберёт.

Подозреваю, что компилятор просто вылетает по AV, наткнувшись на описанную выше структуру.
Re: BCB6 - union / struct Bug
От: Antares19 Россия http://igor-vagin.moikrug.ru/
Дата: 16.10.05 02:26
Оценка:
Здравствуйте, Здоровый Бык, Вы писали:

ЗБ>BCB6 подозревается на наличие серьёзного бага в компиляторе.


Хм, а билдер со всеми апдейтами?

Я попробовал — все билдидтся, все запускается.
Проверил пару раз, вроде все 1 в 1 сделал.
Re[2]: BCB6 - union / struct Bug
От: Здоровый Бык Россия  
Дата: 17.10.05 06:29
Оценка:
В том-то и прикол, что со всеми обновлениями.

Версия 6.0, build 10.166

А вот тут лежит оригинальный проект:

http://bcb6bug.narod.ru/

архив:

http://bcb6bug.narod.ru/BCB_6_UNION_BUG.zip

Проверял на разных компутерах — вылетает BCB, и всё тут!
Re[3]: BCB6 - union / struct Bug
От: Antares19 Россия http://igor-vagin.moikrug.ru/
Дата: 17.10.05 06:58
Оценка:
Здравствуйте, Здоровый Бык, Вы писали:

ЗБ>http://bcb6bug.narod.ru/BCB_6_UNION_BUG.zip

ЗБ>Проверял на разных компутерах — вылетает BCB, и всё тут!

Хм. Так дейстительно вылетает.
Причем только в том случае если обьявленая структура хоть как-то используется в проекте. Стоит закомментить "FUN_RECORD fun = {0,0,0};" или заменить его на "FUN_RECORD fun;", как все начинает нормально собираться. Интересно.

О, и так тоже работает: FUN_RECORD fun = {0};

PS: кстати, предварительно пришлось отковырять в этом проекте зависимость от TntLibR.bpi %)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.