3 ms·
Some very good observations. Otherwise a few points, from the copy here (clearly a 1st ed): http://cs.upm.ro/_users/cursuri_on_line/Alte_documentatii/C%20Progr
by etqwzutewzu 11y ago
Some very good observations.
Otherwise a few points, from the copy here (clearly a 1st ed): http://cs.upm.ro/_users/cursuri_on_line/Alte_documentatii/C%20Programming%20Language.pdf http://cs.upm.ro/_users/cursuri_on_line/Alte_documentatii/C%...
"void didn’t exist in the book (although it did exist at some point before C89; see here, section 2.1)"
-> There are many occurrences of void in the document above.
"It appears that stdio.h was the only header that existed"
-> From the document above many other headers are available (string.h, math.h, etc.)
"Note that return 0; was not necessary." (on the main function)
-> return 0 is not necessary in Standard as well (even if the semantic of omitting it is different between C89 and C99).
- zorpner 11y ago(clearly a 1st ed) Heh. Don't believe everything you read, kid.
- _kst_ 11y agoMy paper copy of K&R1 (1978) does not mention void, nor does it mention standard headers other than stdio.h. The linked document may be a later draft (and it's almost certainly a copyright violation). Prior to C99, reaching the closing "}" of main() caused the program to return an undefined status to the calling environment. In C99 and later (as in C++), reaching the closing "}" does an implicit "return 0;".
- dfox 11y agoI had some problems in believing that C99 says that main() implicitly returns 0, so for future reference: It says so in 5.1.2.2.3, even including wording concerning the closing "}" (which seems to me as slightly quirky way to describe what it is describing). As for stdio.h being only header: it makes sense, as headers like stdlib.h and string.h contain mostly function declarations, which you don't strictly need in K&R. Some of 80's UNIX C code examples in books I've seen don't include anything (and there are even some that declare things like FILE and errno directly without including it from anywhere).