Est-ce que je deviens fou ici? L'opérateur ternaire dans cette fonction est de lancer le « lvalue nécessaire comme opérande gauche d'erreur d'affectation »lvalue nécessaire comme opérande gauche d'affectation avec opérateur bool et ternaire dans C
GSM_text_s *text_travers_find(const char* filename){
//linked list traversal logic for finding and returning the desired node
text_tmp = text_head;
bool name;
if(text_tmp){
(strcmp(filename, text_tmp->filename)) ? name = false : name = true;
while((!(name)) && (text_tmp->next)){
text_tmp = text_tmp->next;
}
} else {
return text_tmp;
}
return text_tmp;
}
EDIT: Comme je suis chargé une mauvaise utilisation de l'opérateur ternaire.
Il devrait être:
name = (strcmp(filename, text_tmp->filename)) ? false : true;
Une autre solution qui fonctionne, que j'ai découvert dans le cadre de ce poste étant répondu, est de tout simplement pas la valeur du nom:
(strcmp(filename, text_tmp->filename)) ? (!name) : name;
Ce sera évidemment fonctionne uniquement si le nom est défini sur la valeur par défaut souhaitée.
Merci à tous, pour vos réponses, mises à jour !!
utilisation ... parenthèses –
Sidenote: Vous pouvez éviter complètement le nom ternaire '= strcmp (nom de fichier, text_tmp-> nom de fichier) == 0 ". – user694733
... et le nom serait évalué à vrai si ces chaînes comparent la même chose. C'est vraiment beau. Va le garder dans le mien @ user694733 :) – MedicineMan25