Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: Вопросы по С/С++ (СИ)

Сообщение asteroid7 »

Мастер Ломастер писал(а):это очень хороший компилятор, если на высоком уровне оптимизации код не работает :)))
Сарказм не к месту...
Иар позиционируется как один из лучших компиляторов. Т.к. коммерческий. И чтобы включать оптимизацию medium необходимо хорошо знать Си. А для high - знать возможности и механизмы компилятора.
И мой пост выше был предназначен пользователю, а не высказыванию за иар :)
Lockdog
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт июл 15, 2008 19:29:21
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Lockdog »

asteroid7 писал(а):На программу не хватает около 100 байт.
Попробуйте включить оптимизатор по "size".
Alt+F7 -> C/C++Compiler -> Optimizations. Выбрать Low или, в крайнем случае, Medium.
При уровне High код может не заработать.

Оптимизация не помогает.
Почему может не хватать, если массив во флеше, а программа не такая уж и большая
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение md5sum »

Был килобайт...
int __flash atmel[]

Теперь 2кило.
— Не говорите мне что делать и я не скажу куда Вам идти...
Lockdog
Встал на лапы
Сообщения: 101
Зарегистрирован: Вт июл 15, 2008 19:29:21
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Lockdog »

md5sum писал(а):Был килобайт...
int __flash atmel[]

Теперь 2кило.


И как это поможет?
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение md5sum »

Lockdog писал(а):И как это поможет?

Так это-ж Ваш кусок кода!
У Вас изначально был массив char заполненный 0xff. И Вы писали, что он 1 кило.
Затем Вы переделали его на int и заполнили 1-ками.
При этом размер массива стал 2 кило. :dont_know:
— Не говорите мне что делать и я не скажу куда Вам идти...
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Re: Вопросы по С/С++ (СИ)

Сообщение asteroid7 »

Lockdog писал(а):Оптимизация не помогает.
Почему может не хватать, если массив во флеше, а программа не такая уж и большая

В настройках установите контроллер m32 или m64. В настройка линкера:
Изображение
Откомпилите. В папке проекта Output в конце файла <проект>.map покажите распределение сегментов SEGMENTS IN ADDRESS ORDER.
iar_linker_list.GIF
(24.86 КБ) 912 скачиваний
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

asteroid7 писал(а):
Lockdog писал(а):Оптимизация не помогает.
Почему может не хватать, если массив во флеше, а программа не такая уж и большая


Может уменьшить занимаемое место?

Есть вариант:)
если есть возможность сделать столбиком эти элементы массива для картинки, то можно перевести их к виду 0b11001111,0b01100000, и тд

если интересует, могу сделать.
В поисках истины человек развивается.
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

Re: Вопросы по С/С++ (СИ)

Сообщение lix »

vitalik_1984 писал(а):Может уменьшить занимаемое место?

Есть вариант:)
если есть возможность сделать столбиком эти элементы массива для картинки, то можно перевести их к виду 0b11001111,0b01100000, и тд

если интересует, могу сделать.


вручную собрался переводить? %)

какая разница как они написаны. главное чтобы в памяти каждый пиксел занимал один бит. а как это в сорце написано - не важно.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

lix писал(а):
vitalik_1984 писал(а):Может уменьшить занимаемое место?

Есть вариант:)
если есть возможность сделать столбиком эти элементы массива для картинки, то можно перевести их к виду 0b11001111,0b01100000, и тд

если интересует, могу сделать.


вручную собрался переводить? %)

какая разница как они написаны. главное чтобы в памяти каждый пиксел занимал один бит. а как это в сорце написано - не важно.


в экселе
В поисках истины человек развивается.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение DX168B »

Вопрос по MFC. (Visual Studio)
Можно ли сделать кнопку неактивной через класс CButton ?

Звиняюсь, нашёл. :oops:
Делается вот так:

Код: Выделить всё

CAppDlg::GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
I am DX168B and this is my favourite forum on internet!
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: Вопросы по С/С++ (СИ)

Сообщение stas00n »

Друзья, подскажите, как избавиться от варнингов: Warning [752] conversion to shorter data type ?
Компилятор PICC так ругается, когда я присваиваю переменной константое выражение содержащее операции сдвига, например:

Код: Выделить всё

/* Definitions for T1CON register */
#define   _TMR1ON      0
#define   _TMR1CS      1
#define   _T1SYNC      2
#define   _T1OSCEN   3
#define   _T1CKPS0   4
#define   _T1CKPS1   5
.......
T1CON = (1<<_TMR1ON|1<<_T1OSCEN|1<<_TMR1CS|1<<_T1SYNC);
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

Re: Вопросы по С/С++ (СИ)

Сообщение lix »

Код: Выделить всё

T1CON = (1<<_TMR1ON)|(1<<_T1OSCEN)|(1<<_TMR1CS)|(1<<_T1SYNC);
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: Вопросы по С/С++ (СИ)

Сообщение stas00n »

lix, увы, не помогает. Хотя такая запись, пожалуй, правильнее. Да, и похоже что наличие логических операторов в выражении автоматом расширяет результат до 16 бит:

Код: Выделить всё

unsigned char a;
unsigned int b;

a = ~0x01;    //Есть варнинг
a = 0xFE;     //Нет варнинга
b = ~0x01;    //Нет варнинга
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение ibiza11 »

извиняюсь за оффтоп. Доброго времени суток, коты! Ввопрос немного не по теме, здесь приведу только ссылку на другую тему. Просмотров темы много, а ответов нет, может все боятся Си? А здесь в основном знатоки Си, да и подфорум про микроконтроллеры. В общем у кого есть время, просьба хотя бы прочесть первое сообщение в этой теме про алгоритм приема пакета по UART.
Последний раз редактировалось ibiza11 Чт июн 09, 2011 09:00:53, всего редактировалось 1 раз.
Ставим плюсы: )
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Вопросы по С/С++ (СИ)

Сообщение ChipKiller »

ibiza11 писал(а):...может все бояться Си?
ИМХО дело не в этом - проще написать с нуля самому, чем понять и переделать чужое.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение ibiza11 »

ChipKiller писал(а):
ibiza11 писал(а):...может все боятся Си?
ИМХО дело не в этом - проще написать с нуля самому, чем понять и переделать чужое.

так я и не просил переделывать. просто хотя бы привести свой алгоритм, а я уж сам переделаю.
Ставим плюсы: )
Аватара пользователя
Волосатый
Сверлит текстолит когтями
Сообщения: 1288
Зарегистрирован: Пн апр 14, 2008 12:54:35
Откуда: Город ГЕРОЙ Ленинград
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Волосатый »

Господа, подскажите пожалуйста как из байтового хексового числа (например 0x37) сделать десятичное число (37), и обратно? Сколько уже бьюсь все никак не выходит...
Или может существуют какие-то спец функции для этого (для CVAVR) ?
Опыт приходит сразу после того, как он был нужен...
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Вопросы по С/С++ (СИ)

Сообщение Gudd-Head »

Волосатый писал(а):Господа, подскажите пожалуйста как из байтового хексового числа (например 0x37) сделать десятичное число (37), и обратно?

Хитро... обычно переводят 37h <—> 55.
Алгоритм-то перевода простой: берём первую тетраду (3), домножаем на 10 (3*10=30) и прибавляем вторую (30+7=37). По хорошему ещё проверяем, не больше ли 9 каждая цифра.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Волосатый
Сверлит текстолит когтями
Сообщения: 1288
Зарегистрирован: Пн апр 14, 2008 12:54:35
Откуда: Город ГЕРОЙ Ленинград
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Волосатый »

Gudd-Head писал(а):
Волосатый писал(а):Господа, подскажите пожалуйста как из байтового хексового числа (например 0x37) сделать десятичное число (37), и обратно?

Хитро... обычно переводят 37h <—> 55.
Алгоритм-то перевода простой: берём первую тетраду (3), домножаем на 10 (3*10=30) и прибавляем вторую (30+7=37). По хорошему ещё проверяем, не больше ли 9 каждая цифра.

Как все просто :))
Вот быстренько накидал:

Код: Выделить всё

if ((hex&0xF)>9)
    hex+=6;
dec=(10*(hex>>4)+(hex&0xF));

У меня в первой тетраде >9 не может быть, поэтому проверку не делал.
Опыт приходит сразу после того, как он был нужен...
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение IfoR »

Волосатый писал(а):Господа, подскажите пожалуйста как из байтового хексового числа (например 0x37) сделать десятичное число (37), и обратно?

Чет меня переклинило от этой фразы... Понял что требуется только с третьего раза.
У меня вопрос, зачем это?
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Ответить

Вернуться в «Разные вопросы по МК»