Вывести char arrray из функции

Есть функция:

  const char* get_name_of_weekday(uint8_t dayIdx){
     switch (dayIdx){
      case 1:
        return "понедельник"; 
        break;
      case 2:
        return "вторник"; 
        break;   
      case 3:
        return "среда"; 
        break;
      case 4:
        return "четверг"; 
        break;      
      case 5:
        return "пятница"; 
        break;   
      case 6:
        return "суббота"; 
        break;
      case 7:
        return "воскресенье"; 
        break;            
     }
     return "Unknown";
  }

И есть её вызов:

const char weekDay[] = get_name_of_weekday(_TODAY_DAY_);

Пишет ошибку при компиляции:

initializer fails to determine size of 'weekDay'

Где я накосячил и как исправить?


Ответы (1 шт):

Автор решения: Eoan Ermine

Инициализируя переменную weekDay типа const char[] значением типа const char* вы допускаете ошибку в том, что weekDay - это массив, размер которого должен быть известен при компиляции (для того, чтобы компилятор знал, сколько памяти необходимо для него выделить).

Компилятор не может определить его размер из типа возвращаемого значения функции, о чем и выдает вам ошибку.

Решение заключается в замене типа переменной weekDay с const char[]

const char weekDay[] = get_name_of_weekday(_TODAY_DAY_);

на const char*

const char* weekDay = get_name_of_weekday(_TODAY_DAY_);
→ Ссылка