Использование массива char * в отдельном файле .h - PullRequest
0 голосов
/ 04 мая 2020

Я делаю программу для avr с ЖК-экраном, и мне нужно иметь возможность менять языки в ЖК-меню. Я думал о создании массива строк для каждого языка в виде __ fla sh const char * array [] . Затем используйте указатель, чтобы указать на требуемый языковой массив. Есть ли способ сделать это? Я пробовал использовать extern, но что-то не так. Кроме того, должен ли я определять размер для каждой строки? или оставить это так?

Код, который я пробовал:

в файле Language.h:

extern const char* Test_lang[2];

в Language . c файл:

    const char* Test_lang[2]={"test1","test2"};

в файле LCD.h:

#include Language.h

в ЖК-дисплее. c файл:

stati c __fla sh const char ** Unicode_text [];

void lcd_init(void)
{
.
.
.
 Unicode_text=Test_lang;
}

void lcd_test_print(void)
{
  lcd_print(Unicode_text[1]);
}

1 Ответ

0 голосов
/ 04 мая 2020

добро пожаловать в StackOverflow! Я бы сделал следующее:

Вы используете массив массивов строк для хранения языковых строк.

Первый массив - это массив языков. Вложенный массив - это массив строк для каждого языка. Третий «массив» - это массив символов (то есть «const char *»).

Вам просто нужно изменить длину каждого массива (массива языков и массива строк).

Пример: если у вас есть 3 языка и 5 строк, вы должны написать строки [3] [5]

const int frenchIndex  = 0;
const int englishIndex = 1;

const char* strings[2][2] = {
    // French Text
    { "chien", "bonjour !" },

    // English text
    { "dog", "hello !" }

    //...
};

// Will print "dog" in french then in english
printf("%s\n", strings[frenchIndex][0]);
printf("%s\n", strings[englishIndex][0]);

// Will print "hello" in french then in english
printf("%s\n", strings[frenchIndex][0]);
printf("%s\n", strings[englishIndex][1]);

Что касается вашей проблемы, у меня недостаточно информации, чтобы помочь вам, но я, если Я могу!

...