Given the standard definition for the main program:
int main(int argc, char *argv[]) { ... }
Under which circumstances can argc
argc
To add to the other answers, there is nothing in C (POSIX or not) preventing main() from being called as a function within the program.
int main(int argc, int argv[]) { if (argc == 0) printf("Hey!\n"); else main(0,NULL); return 0; }