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

Работа со строками

Тема навеяна гневными диффирамбами уважаемого jcxz. Вернемся к тем же баранам

char *s_MainMenu[] =
{
    "MAINT ",
    " AUTO ",
    "MANUAL",
    "FAILS ",
    "MUXBUS"
};

void set_display_state(uint8_t state_val, uint8_t state_maxind, char *words[])
{
    g_DisplayStates.MenuState = state_val;
    g_DisplayStates.MaxStringIndex = state_maxind;
    g_DisplayStates.WordstoDisplay = words;
}
set_display_state(MAIN_STATE,MAX_MAIN_INDEX, s_MainMenu);

я так понял это плохо. а так хорошо?

const char *s_MainMenu[] =
{
    "MAINT ",
    " AUTO ",
    "MANUAL",
    "FAILS ",
    "MUXBUS"
};

void set_display_state(uint8_t state_val, uint8_t state_maxind, const char *words[])

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"гневные дифирамбы" - это что-то вроде "сухая вода". В который раз поражаюсь узости вашего кругозора.

а так хорошо?
Да. Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации.

А еще лучше будет сделать const char * const s_MainMenu[] = ... Подумайте, почему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"гневные дифирамбы" - это что-то вроде "сухая вода". В который раз поражаюсь узости вашего кругозора.

Да. Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации.

А еще лучше будет сделать const char * const s_MainMenu[] = ... Подумайте, почему.

я понял. спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации.

Точно!

Я и член-функции классов, не изменяющие членов класса, тоже в обязательном порядке объявляю с модификатором const. Именно по этом-же причинам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...