jenya7 0 24 июля, 2018 Опубликовано 24 июля, 2018 (изменено) · Жалоба Тема навеяна гневными диффирамбами уважаемого 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[]) Изменено 24 июля, 2018 пользователем Jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба "гневные дифирамбы" - это что-то вроде "сухая вода". В который раз поражаюсь узости вашего кругозора. а так хорошо?Да. Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации. А еще лучше будет сделать const char * const s_MainMenu[] = ... Подумайте, почему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба "гневные дифирамбы" - это что-то вроде "сухая вода". В который раз поражаюсь узости вашего кругозора. Да. Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации. А еще лучше будет сделать const char * const s_MainMenu[] = ... Подумайте, почему. я понял. спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 24 июля, 2018 Опубликовано 24 июля, 2018 · Жалоба Если ваша функция принимает значение по указателю и не изменяет значение по этому указателю - всегда нужно объявлять параметр как указатель на константу. Это и вас предохранит от случайного изменения значения, и компилятору даст больше свободы в оптимизации. Точно! Я и член-функции классов, не изменяющие членов класса, тоже в обязательном порядке объявляю с модификатором const. Именно по этом-же причинам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться