De nombreux programmes utilisent des noms standard pour un certain nombre d'arguments et de tableaux de chaînes. Le prototype de la fonction main se présente comme suit int main(int argc, char *argv[]);
. Mais est-ce que je vais casser quelque chose si je choisis des noms personnalisés pour ces variables ?
Par exemple int main(int n_of_args, char *args[]);
Dans le contexte du compilateur, tout va bien. Ces variables sont locales pour la fonction principale, elles peuvent donc avoir n'importe quel nom. Et le code simple se construit et s'exécute parfaitement. Mais ces noms peuvent être utilisés par le préprocesseur. Est-il donc prudent de renommer ces arguments ?
PS Personnellement, je trouve ces noms mauvais, car ils se ressemblent beaucoup et ne diffèrent que par une lettre. Mais TOUT le monde les utilise pour une raison ou une autre.
22 votes
Oui, en toute sécurité.
0 votes
Oui, c'est tout à fait sûr ! !!
55 votes
Comme toutes les réponses l'indiquent, oui, c'est sûr. Mais s'il vous plaît, ne le faites pas. Tout le monde sait ce que
argc
yargv
sont.n_of_args
yargs
pourrait être plus clair pour quelqu'un qui ne connaît pas le C ou le C++ - mais ce n'est pas votre public.4 votes
Vous peut ne le font pas, ce n'est pas une raison suffisante pour le faire. Tout le monde sait de quoi il s'agit et s'attend à ce qu'il en soit ainsi.
10 votes
Si la question est précisément "vais-je enfreindre quelque chose si je choisis des noms personnalisés", la réponse précise est "oui, vous enfreindrez la tradition bien établie" ;)
13 votes
Il suffit de les retourner ! et dès le départ, vous posez les bases de la sécurité de l'emploi :)
0 votes
Bien sûr, allez-y, renommez-les et vous découvrirez ce que c'est que d'être le programmeur le plus détesté de l'atelier.
0 votes
J'ai travaillé une fois pour une entreprise où le style maison était
int main(int ac, char **av)
sans autre raison que son laconisme.2 votes
Le compilateur vous comprendra parfaitement, mais personne d'autre ne le fera.
0 votes
Bien que vous puissiez les renommer comme vous le souhaitez, les noms reflètent l'identité de l'entreprise. nombre d'arguments y vecteur d'arguments (donc
argc
&argv
), ce qui rend un peu difficile l'invention de noms plus descriptifs qui transmettent cette intention tout en limitant la longueur des noms de variables à la même taille de 4 caractères...0 votes
@DavidC.Rankin Suggestion de l'OP
n_of_args
ne limite pas la longueur à quatre caractères. Je ne vois pas très bien pourquoi ce serait une bonne chose, de toute façon.0 votes
@KyleStrand Je ne sais pas comment vous avez pu conclure que mon commentaire suggérait une limite absolue de 4 caractères pour tous les noms. Si cela n'est pas clair, il s'agissait d'une déclaration concernant l'efficacité de la dénomination et non d'une limitation de la longueur des noms.
:)
0 votes
@DavidC.Rankin Je ne pensais pas que vous parliez d'une limite absolue ; c'est juste que vous avez spécifiquement mentionné qu'il serait "difficile" de rester en dessous de cette limite avec de nouveaux noms descriptifs, ce qui m'a donné l'impression que vous pensiez qu'il était "difficile" de rester en dessous de cette limite. souhaitable de le faire. Ce que je veux dire, c'est que (sur la base des alternatives proposées) l'OP n'est manifestement pas d'accord sur le fait qu'il est souhaitable de garder les noms aussi courts, de sorte que l'on ne voit pas en quoi il est important (dans ce contexte) qu'il soit difficile de les garder courts.
0 votes
A chacun son métier,
int main (int supercalifragilisticexpialidocious, char **antidisestablishmentarianism) { ... }
c'est très bien... et si vous aimez taper à la machine, tant mieux pour vous, mais pas pour moi.0 votes
Le nom n'est pas bon ? em, vérifiez std::basic_streambuf. Il existe une fonction
setg()
il a un paramètre__gnext
dans le corps de la fonction, une ligne de code fait_M_in_cur = __gnext;
a remarqué les noms des variables ? Ce sont de vrais mauvais noms~0 votes
Les noms sont mauvais, vous avez raison. Appelez-les
argument_count
yarguments
ou quelque chose d'autre qui a du sens. La convention n'est d'aucune utilité ici.0 votes
@r0n9 Il ne s'agit pas de "vrais" mauvais noms, mais de également mauvais noms ;)