Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа со строками
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Jenya7
Тема навеяна гневными диффирамбами уважаемого 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[])
Сергей Борщ
"гневные дифирамбы" - это что-то вроде "сухая вода". В который раз поражаюсь узости вашего кругозора.
QUOTE (Jenya7 @ Jul 24 2018, 15:20) *
а так хорошо?
Да. Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации.
А еще лучше будет сделать const char * const s_MainMenu[] = ... Подумайте, почему.
Jenya7
Цитата(Сергей Борщ @ Jul 24 2018, 18:57) *
"гневные дифирамбы" - это что-то вроде "сухая вода". В который раз поражаюсь узости вашего кругозора.
Да. Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации.
А еще лучше будет сделать const char * const s_MainMenu[] = ... Подумайте, почему.

я понял. спасибо.
jcxz
Цитата(Сергей Борщ @ Jul 24 2018, 15:57) *
Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации.

Точно!
Я и член-функции классов, не изменяющие членов класса, тоже в обязательном порядке объявляю с модификатором const. Именно по этом-же причинам.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.