#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. Спасибо! мне удалось устранить проблему 🙂