0
votes

Comment corriger "Erreur: attendu;, ou) avant" Paramètre de chaîne

Nous essayons de mettre en œuvre une coquille Bash en C pour notre projet. À l'heure actuelle, je fais une fonction, Adlasias et sa base sur notre fonction AddTutank (qui remplit notre structure de TRARRAY).

La structure de TRARRAY a un ** caractère (tableau de cordes) et INT pour le nombre de jetons dans le tableau . De même, la structure Aliassarray a deux ** Char et un Int pour le nombre d'alias. La mise en œuvre était presque identique, donc je ne comprends pas où l'erreur de la fonction Addalias vient de.

J'ai déjà essayé de chercher la pile et déplacez le code, mais je n'ai aucune idée de ce qui l'a causé. < / p>

Ceci est à partir du fichier d'en-tête: xxx

Il s'agit de la fonction du fichier C, qui doit remplir les deux tableaux avec le raccourci et son alias donné Par les paramètres respectivement: xxx

}

et ce sont les déclarations de notre fonction principale: aliasarray aliases; xxx

C'est tout le code que j'ai ajouté pour cette partie et lorsque j'essaie de le commenter et de tout courir avec GCC -g, je reçois quelques avertissements non liés Mais tout va bien. Quand ce n'est pas commenté et j'essaie de l'exécuter, je reçois ces erreurs sur elle: xxx


2 commentaires

court et long sont des mots réservés dans C (comme int et void ). Vous ne pouvez pas les utiliser comme noms de variables.


court et long sont des mots-clés, ne peuvent pas être utilisés comme identifiant. Essayez d'utiliser de bons éditeurs ou d'IDE qui vous aident à identifier les mots-clés / idées via les couleurs


3 Réponses :


4
votes

que char * court et char * long sont les problèmes. court et long sont des noms de type dans C. Vous devez utiliser un autre nom de paramètre.


1 commentaires

C'est toujours une bonne idée d'inclure des liens pour ajouter une couche d'explication anorteuse. Comme des liens vers ce qui est court et lien pour lire davantage lire < un href = "https://www.quora.com/what-is-valid-and-invalid-c-variables-names" rel = "Nofollow Noreferrer"> Ce qui ne peut pas être un identifiant ou inclure eux-mêmes en réponse.



1
votes

court code> et long code> sont des mots réservés en C (comme int code> et void code>).
Vous ne pouvez pas les utiliser comme noms de variables. p>

Modification suggérée: p>

void addAlias(aliasArray* instr_ptr, char* shortName, char* longName)


0 commentaires

1
votes

Selon la norme C (6.4.1 Mots-clés)

2 Les jetons ci-dessus (sensible à la casse) sont réservés (en traduction Phases 7 et 8) Pour une utilisation en tant que mots-clés, un ND ne doit pas être utilisé autrement .

et (6.4.2 identificateurs)

4 lorsque les jetons de prétraitement sont convertis en jetons lors de la traduction Phase 7, si un jeton de prétraitement pourrait être converti en une Mot clé ou identifiant, Il est converti en mot-clé .

dans le prototype de fonction Vous pouvez omettre les identificateurs de paramètres xxx

dans la définition de fonction que vous devez utiliser d'autres identifiants pour les noms de paramètres que les mots-clés.

Vous pouvez utiliser par exemple les mêmes noms pour les paramètres que les noms de la structure xxx

prennent également en compte que les paramètres doivent avoir des qualificateurs const . xxx

sinon la déclaration de fonction confondra les utilisateurs de la fonction et ne peut pas accepter des pointeurs constants, bien que la fonction ne change pas les chaînes correspondantes.


0 commentaires