Dans l'extrait de code ci-dessous, puis-je remplacer char * par const char * et supprimer l'appel de la fonction strdup() et prendre directement la valeur optarg définie par getopt()? Je suis conseillé d'utiliser const char * pour ignorer l'utilisation de la fonction strdup. Appréciez l'aide à l'avance.Indique si const char * et strdup ont la même fonction lorsqu'ils sont utilisés avec getopt dans C?
/* Code Snippet */
char *dir = NULL;
char *bld = NULL;
int chr;
while ((chr = getopt(argc, argv, "d:a:b:f:")) != -1) {
switch (chr) {
case 'd': //Directory parameter
dir = strdup(optarg);
if (dir == NULL) { /*Error*/ }
case 'b': //Build parameter
bld = strdup(optarg);
if (bld == NULL) { /*Error*/ }
...other code...
}
}
Je ne comprends vraiment pas la nécessité de le faire.
Modifier: Merci pour les réponses. C'était vraiment utile. J'ai modifié le code à const char * et j'ai ignoré l'appel de strdup.
Merci, Liju
Je recommande d'utiliser un tiret plus grand qu'un caractère par niveau; il est difficile de voir où les indentations s'alignent. Personnellement, j'utilise 4 espaces; le noyau Linux utilise 8 espaces (en réalité, un arrêt de tabulation défini à 8). –
J'utilise l'espacement des tabulations 4. Mais quand j'ai copié le code ici, il ne montre pas les espaces, donc je l'ai aligné. Désolé pour le bazar. –