Я продолжаю получать ошибку при использовании get_string CS50

#c #cs50

#c #cs50

Вопрос:

когда я использую ‘get_string’, я получаю это сообщение об ошибке. я включил <cs50.h> ! пожалуйста, кто-нибудь может помочь, потому что я не могу понять, что я делаю неправильно

 adability.c  -lcrypt -lcs50 -lm -o readability
readability.c:9:19: error: initializer element is not a compile-time constant
    string text = get_string ("Text: ") ;
                  ^~~~~~~~~~~~~~~~~~~~~
/usr/include/cs50.h:109:25: note: expanded from macro 'get_string'
#define get_string(...) get_string(NULL, __VA_ARGS__)
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  

Комментарии:

1. Инициализатор не является константой. (что означает: он вызывает функцию, которая не может быть выполнена во время компиляции, или: это происходит в глобальном масштабе)

2. @Carcigenicate Это псевдоним typedef для char * , и тот, который исторически причинил гораздо больше вреда людям, новичкам в C, чем когда-либо, когда- либо помогал. get_string Идеология (и многие другие подобные нюансы) из этого отвратительного заголовка / библиотеки предназначена для того, чтобы «оградить» студентов от того, что они должны изучать.

3. Находится string text = get_string ("Text: ") ; вне функции? Вы не можете этого сделать. Инициализаторы глобальных переменных (технически, для переменных со статическим хранилищем) должны быть постоянными.

4. Спасибо! мне удалось устранить проблему 🙂