A lot of programs use standard names for a number of arguments and arrays of strings. The prototype of main function looks like: int main(int argc, char *argv[]);
. But would I break something if I choose custom names for these variables?
E.g. int main(int n_of_args, char *args[]);
In the context of the compiler, everything is fine. These variables are local for main function, so they may have any names. And the simple code builds and runs perfectly. But these names may be used by preprocessor. So is it safe to rename these arguments?
PS Personally I find these names bad, because they look very similar and differ in only one letter. But EVERYONE uses them for some kind of reason.
Yes, it is safe, so long as you use valid variable names. They're local variables, so their scope doesn't go beyond the main
function.
From section 5.1.2.2.1 of the C standard:
The function called at program startup is named
main
. The implementation declares no prototype for this function. It shall be defined with a return type ofint
and with no parameters:int main(void) { /* ... */ }
or with two parameters (referred to here as
argc
andargv
, though any names may be used, as they are local to the function in which they are declared):int main(int argc, char *argv[]) { /* ... */ }
or equivalent; or in some other implementation-defined manner
That being said, using anything other than argc
and argv
might confuse others reading your code who are used to the conventional names for these parameters. So better to err on the side of clairity.