09.03.2017, 13:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,462
Сказал спасибо: 287
Сказали Спасибо 1,121 раз(а) в 540 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
синус 10 бит, копи, пейст
|
|
|
Эти 2 пользователя(ей) сказали Спасибо OakRidge за это сообщение:
|
|
|
09.03.2017, 17:29
|
|
Временная регистрация
Регистрация: 25.11.2016
Адрес: Ох и где я только не проживал...
Сообщений: 80
Сказал спасибо: 87
Сказали Спасибо 174 раз(а) в 40 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
Вообще компилятор для констант автоматически выполняет вычисления. Заполнить константы в цикле не получится, потому как цикл начинает работать в программе, а константы заполняются до появления программы. Но можно сделать приблизительно так:
const int cIntArray[] = {0,1+2,2*3,3+sin(M_PI/2),4,5,6,7,8,9};
|
|
|
|
09.03.2017, 17:32
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,830
Сказал спасибо: 919
Сказали Спасибо 4,302 раз(а) в 2,571 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
Черт с ними, с константами, тут все ясно. Другое дело, как можно вообще подключать текстовые файлы к проекту с произвольным форматом, чтобы компилятор сам мог разбирать данные оттуда?
|
|
|
|
09.03.2017, 19:10
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,197
Сказал спасибо: 11,131
Сказали Спасибо 3,843 раз(а) в 2,920 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
Easyrider83, так на то есть #include.
У меня где-то был cgi скрипт который помогал в своё время решить вопрос с генерацией разных таблиц с константами.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
10.03.2017, 00:50
|
|
Прописка
Регистрация: 14.10.2006
Адрес: Ростов-на-Дону
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 33 раз(а) в 22 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
Сообщение от Easyrider83
|
Черт с ними, с константами, тут все ясно. Другое дело, как можно вообще подключать текстовые файлы к проекту с произвольным форматом, чтобы компилятор сам мог разбирать данные оттуда?
|
Это уже из области искусственного интеллекта .
Обычно наоборот, произвольные программы подстраиваются под синтаксис С и выдают результаты своей работы в виде массива констант. Вот, например, результат работы утилиты EZ-Click от Cypress (конфигурация для сенсорной микросхемы из серии CMBR3):
Код:
|
/* Project: D:\microchip\_PROJECTS\20161121_VT1_0\CMBR3_Projec t\CMBR3_configuration\CMBR3_configuration.cprj
* Generated: 29.11.2016 10:23:36 +03:00 */
const unsigned char CY8CMBR3116_configuration[128] = {
0xFFu, 0xFFu, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x80u, 0x80u, 0x80u, 0x80u,
0x80u, 0x80u, 0x80u, 0x80u, 0x80u, 0x80u, 0x80u, 0x80u,
0x80u, 0x80u, 0x80u, 0x80u, 0x03u, 0x00u, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x80u,
0x05u, 0x00u, 0x00u, 0x02u, 0x00u, 0x02u, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x1Eu, 0x1Eu, 0x00u,
0x00u, 0x1Eu, 0x1Eu, 0x00u, 0x00u, 0x05u, 0x87u, 0x01u,
0x00u, 0xFFu, 0xFFu, 0xFFu, 0xFFu, 0xFFu, 0xFFu, 0xFFu,
0xFFu, 0x00u, 0x00u, 0x00u, 0x13u, 0x03u, 0x01u, 0x58u,
0x00u, 0x35u, 0x06u, 0x00u, 0x00u, 0x0Au, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x14u, 0x89u
}; |
А уж этот файлик любой проект через #include с удовольствием скушает...
|
|
|
|
10.03.2017, 05:47
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
Сообщение от JonRembo
|
Это что такое, ссылку можно?
|
Нписано с помощью большого брата и Билдера
Код:
|
#include ‹stdio.h›
#include ‹stdlib.h›
#include ‹math.h›
#define N 63
void main(void)
{
int i, y;
float dx, x, tmp;
FILE *fp;
fp = fopen("costable.prn", "w");
if (fp == NULL)
{
printf("Can't open the file");
exit(EXIT_FAILURE);
}
fprintf(fp, "#define NSTEPS\t %d\n\nstatic __flash\nchar\tcos2Table[] =\t{\\\\ cos square table", N);
for (i = 0, x = -M_PI_2, dx = M_PI/N; i ‹= N; ++i)
{
if (!(i % 8))
fprintf(fp, "\n\t\t\t");
tmp = cos(x);
y = ((tmp*tmp)/M_PI_2)*N*6 + 0.5;
fprintf (fp,"%3d%c ", y, (i!=N)? ',' : ' ');
x += dx;
}
fprintf(fp, "\n\t\t\t};\n");
fclose(fp);
// getchar();
} |
PS: Предполагается использовать в IAR AVR.
|
|
|
|
11.03.2017, 02:37
|
|
Прописка
Регистрация: 14.12.2006
Адрес: Ставрополь - Донское
Сообщений: 260
Сказал спасибо: 115
Сказали Спасибо 189 раз(а) в 78 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
вах, наворотили.
на Экселе делаешь подобную табличку, как в архиве.
потом "файл-сохранить как- "PRN (разделитель - пробел).
и всё.
Вложения:
|
3.rar (2.6 Кб, 0 просмотров) |
|
|
|
Сказали "Спасибо" pasha_zv
|
|
|
11.03.2017, 15:45
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 756
Сказал спасибо: 368
Сказали Спасибо 842 раз(а) в 391 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
Свойства проекта -› Build-actions -› Pre-build command line.
Запускается утилита, которая делает интеллектуальную работу -
подготавливает файл в нужном формате и кладет в оговоренное место.
К моменту начала построения проекта подключаемый файл готов.
Поскольку в этом случае утилита будет запускаться каждый раз перед
построением проекта, то на нее можно возложить принятие решение о
необходимости перегенерации подключаемого файла.
В общем, есть где развернуться..
|
|
|
|
26.03.2017, 13:38
|
|
Частый гость
Регистрация: 06.01.2011
Сообщений: 32
Сказал спасибо: 33
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
Вообще,*во время компиляции много чего можно сделать.
Вот статейка, может, чего выудите для себя, или вдохновитесь.
Но лично я бы сгенерил бы константы каким-нибудь скриптом и вставил или включил бы в компилируемый проект, как вам уже советовали выше.
|
|
|
|
17.04.2017, 16:34
|
|
Вид на жительство
Регистрация: 20.12.2013
Сообщений: 311
Сказал спасибо: 5
Сказали Спасибо 94 раз(а) в 59 сообщении(ях)
|
Re: Как можно инициализировать массив констант в цикле?
А не проще хранить подобные константы в энергонезависимой памяти контроллера? И для каждого устройства писать туда нужные константы...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:14.
|
|