I've written a small C function to handle the builtin commands of a custom shell that I'm writing in C. Is it better to use a switch instead?
int handleBuiltinCommands(char *input, int ret) {
int built_in_command = 0;
if (strcmp(input, "exit") == 0) {
free(input);
exit(0);
}
if (StartsWith(input, "cd")) {
built_in_command = 1;
runcd(input);
}
if (StartsWith(input, "checkEnv")) {
built_in_command = 1;
checkEnv(ret);
}
return built_in_command;
}
I compile it with gcc -pedantic -Wall -ansi -O3
(Background: Tokenizing a shell command)
1 Answer 1
It's OK to use the if
construction, although if you plan to have more than a few commands, using switch
leads to cleaner code imho. In addition, why not using if else
instead of just if
? That way not all of your if
have to be evaluated (in average).
-
2\$\begingroup\$ The code is in C, so
switch
can't be used on strings, c.f. this SO post for some ideas around it. \$\endgroup\$ferada– ferada2016年04月17日 12:44:13 +00:00Commented Apr 17, 2016 at 12:44 -
\$\begingroup\$ Ow, that's right. \$\endgroup\$user8642– user86422016年04月17日 18:45:49 +00:00Commented Apr 17, 2016 at 18:45
switch
over strings in C so the question whether doing so would be better is somewhat moot. \$\endgroup\$