Blue Ocean said:
<snip>
Well, I'll take your advice there, since I only know what one of those
things actually is (assembly). I am a rising sophmore computer
science student at university. Any guesses as to when I'll pick up
the rest of that?
When you need to, and no sooner
Patience is a virtue.
POSIX.2, "SYSV" and "BSD" are intersecting sets of Unix C programming APIs.
If you're on a Unix system thumb through the man pages and you'll see
references. I18N is short for internationalization, a generic moniker for
the process of making software portable across language and custom.
http://en.wikipedia.org/wiki/POSIX
http://en.wikipedia.org/wiki/I18n
GCC and glibc try to be lots of things to lots of people, and most of the
developers have been around the block quite a few times. Over time you'll
become acquainted w/ all the things its riddled w/, but for the
uninitiated--including myself--its usually not well suited for exhibition.
http://www.gnu.org/doc/doc.html
I know it sounds silly but I desire to know
everything about programming, eventually. Or, if not everything, as
absolutely close as possible, and that includes knowing what it would
take to eventually be able to write my own operating system (not that
anything will ever come to that, but I want to come to the point where
I know I could if I had to, however rudimentary it might be).
<snip>
Since we're on comp.lang.c, I'll just suggest to listen intently to these
folks. Some people mistake their preciseness as unneccessary pedantism, but
if you stick around long enough you learn that precision is important unto
itself.
As far as C is concerned, stick to the ANSI/ISO standards.
http://rm-f.net/standards/
http://oakroadsystems.com/tech/c-predef.htm
If you can't solve your particular problem from there (and most of the time
you can), then drop down a level to another standard; something like
POSIX.2/SUSv3--Standard Unix Specification--if you're on a Unix.
http://www.unix.org/version3/online.html
If you still can't solve your problem satisfactorily, then resort to
non-standard but reasonably portable interfaces. Those are sometimes
difficult to find. snprintf() was sort of in this boat prior to the
C99 standard.
Then resort to platform or environment specific features.
This is a rule of thumb (not only just for C programming). Ultimately the
point is that an affinity for standards, idioms and established practices
keeps you anchored and focused so that you can progress smoothly. They
equally provide a reference for things they never mention by virtue of
defining a landscape. Similarly--for somebody who has the faintest bit of
curiosity and can read--the extremely dangerous but standardized gets()
function in standard C provides an excellent, concrete example how _not_ to
do something. In this sense, a standard serves as an enabler of productive
discourse.
Of course, there's no substitute for coding, coding, coding. But it seems
you already recognize that.