Я использую GCC 4.7.2 (C99) и Atmel Studio 6 для проекта микроконтроллера.Как инициализировать массив ранее определенных массивов во время компиляции?
Я хочу определить серию одномерных массивов, а затем упорядочить их в различные двумерные массивы для предопределенных последовательностей.
Например:
unsigned char a1[2] = { 0b00000001, 0b00000010 };
unsigned char a2[2] = { 0b00000010, 0b00000010 };
unsigned char a3[2] = { 0b00000100, 0b00000010 };
unsigned char pattern1[1][2] = { a1, a2, a3 };
Однако это приводит к ошибке:
Initializer element is not computable at load time
Я могу настроить массив после компиляции -
unsigned char pattern1[1][2];
void setup_patterns()
{
pattern1[0] = a1;
pattern1[1] = a2;
pattern1[2] = a3;
}
Но было бы гораздо проще иметь возможность предоставлять список с первым набором массивов, разделенных запятыми, учитывая, сколько их есть и сколько ns будет. (Пример, показанный здесь, очень упрощен.)
Я не очень опытен с программированием на С (я привык к C#). Есть ли способ назначить элементы двумерного массива, используя список определенных/названных одномерных массивов? (. Если во время компиляции или во время выполнения, это не имеет значения)
Первый пример, кажется, работает безупречно. Я не хочу переопределять все 'char' для каждого шаблона, как в вашем последнем примере, это было бы серьезным делом. – JYelton
Право, я просто хотел дать понять, почему вы получили эту ошибку – perreal