Перейти к содержанию
    

S.R.

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о S.R.

  • День рождения 31.05.1972

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Прошу заранее извинить, если ошибся темой :) Пользуюсь сборками от klen для компиляции и сборки проектов под BREW SDK 3.1.5. В данный момент установлена последняя (1228) сборка с gcc 4.4.0. Вылез интересный баг с компиляцией операторов <<. В BREW SDK есть макрос: typedef uint32 RGBVAL; #define MAKE_RGB(r, g, B) (RGBVAL) ( ((uint32)® << 8) + ((uint32)(g) << 16) + ((uint32)(B) << 24) ) Есть код его использующий: pSkin->colorText = MAKE_RGB( color.valR, color.valG, color.valB ); где valR, valG, valB - uint8, colorText - RGBVAL. При выполнении на устройстве возникли трудности, т.к. текст выводился не заданным цветом, а каким-то другим. При отладке в лог обнаружилось, что переменная colorText содержит значение отличающееся от ожидаемого. Так, при считывании из ресурса чисел FF,1,1 в переменной оказывается не 0101FF00, а 0101FFFF... Т.е. в младшем байте (прозрачность) неизвестно откуда появились неизвестные FF... При компиляции и сборке используются следующие ключи CODE = -mlittle-endian -fshort-enums -fshort-wchar -fno-builtin -ffunction-sections -Wall CPU = -mcpu=arm7tdmi ROPI = TARG = -mapcs-frame INTRWK = DYNAPP = -DDYNAMIC_APP OPT = -Os INC = -I$(AEEINCPATH) $(APP_INCLUDES) LIBDIRS = -L$(GCC_LIBPATH) OUT = -c LINK_CMD = --gc-sections --emit-relocs -Map $(TARGET).map LIBS = -lgcc BINFORMAT = -O binary CFLAGS = $(OUT) $(DYNAPP) $(CPU) $(ROPI) $(TARG) $(INTRWK) $(CODE) $(INC) $(OPT) Летом, в предыдущей версии проекта, видимо использовался gcc 4.2 или 4.3 и там этой ошибки не было. Но, как оказалось, у меня нет привычки сохранять старые версии компиляторов...
  2. Самая интересная фишка получается в том, что в плане соответствия стандарту языка самым продвинутым считается Comeau, а это именно фронт-компилятор в C. Так что насчет бреда... На этапе компиляции ни один разумный компилятор не может и не должен сообщать о такой ошибке. Поскольку ее наличие может выяснится и при линковке. А нормальный Singletone и не будет генерировать ошибок, просто возвращая адрес единственного существующего экземпляра...
  3. Попробуй запускать как make --win32 М.б. поможет... По крайней мере мне с кленовским gnu-arm помогло.
×
×
  • Создать...