3 ms·
Can anybody explain to me what's this syntax? This is the first time i see anything like it, and i've been programming in C since i was a teenager. main(ar
by dreta 9y ago
Can anybody explain to me what's this syntax? This is the first time i see anything like it, and i've been programming in C since i was a teenager.
main(argc, argv)
char **argv;
{
}
- ecma 9y agoThat's a K&R (Kernighan and Ritchie) style function declaration. Compilers still support it but the version you'd be more familiar with (ANSI C style) has been standard since at least the late 80s IIRC. ANSI C was standardised in 1989 but that process had been in progress for something like 5 years beforehand.
- colejohnson66 9y agoDoes it have to do with how, in BCPL (one of C’s ancestors), everything was basically an integer? So everything is an integer unless told otherwise?
- boomlinde 9y agoSpecifically, everything is an integer with the auto lifetime (gets discarded with the stack frame) unless otherwise specified. I think most modern compilers will warn on encountering such short hand due to the common error of accidentally declaring integers when you meant to assign a value to a variable you forgot to declare.
- boomlinde 9y agomain and argc are declared as int (technically auto int) by default. argv is declared and given its type between the function head and the function block, which is perfectly legal but quite unusual these days This syntax is probably nice if you use a line oriented editor like ed
- dreta 9y agoI was mostly talking about the odd re-declaration of argv. Everything else is quite clear.
- FRex 9y agoIt's not that hard or unlikely to run into it in old C code. The game Nethack is still being developed and it's programmed this way too (anything I looked at in its code at least).