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. P>
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: p> 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: p> } p> et ce sont les déclarations de notre fonction principale:
aliasarray aliases; p> 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: p>
3 Réponses :
que char * court code> et
char * long code> sont les problèmes.
court code> et
long code> sont des noms de type dans C. Vous devez utiliser un autre nom de paramètre. P>
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.
Modification suggérée: p> 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> void addAlias(aliasArray* instr_ptr, char* shortName, char* longName)
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 fort>. P> blockQuote>
et (6.4.2 identificateurs) p>
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é fort>. p> blockquote>
dans le prototype de fonction Vous pouvez omettre les identificateurs de paramètres p>
xxx pré> dans la définition de fonction que vous devez utiliser d'autres identifiants pour les noms de paramètres que les mots-clés. P >
Vous pouvez utiliser par exemple les mêmes noms pour les paramètres que les noms de la structure p>
xxx pré> prennent également en compte que les paramètres doivent avoir des qualificateurs
const code>. p>
xxx pré> 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. P> P>
court code> et
long code> sont des mots réservés dans
C code> (comme
int code> et
void code>). Vous ne pouvez pas les utiliser comme noms de variables.
court code> et
long code> 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