C: Difference between revisions

485 bytes removed ,  5 years ago
m
Reverted edits by Carver (talk) to last revision by Sinetek
[unchecked revision][unchecked revision]
(Nothing worse than a section on learning C by someone who doesn't know it. Replaced it with the appropriate link to the books section.)
m (Reverted edits by Carver (talk) to last revision by Sinetek)
 
(7 intermediate revisions by 4 users not shown)
Line 6:
 
== Libraries ==
{{Main|C Library}}
 
The C library implements the standard C functions (i.e., the things declared in <stdlib.h>, <math.h>, <stdio.h> etc.) and provides them in binary form suitable for linking with user-space applications.
 
In addition to standard C functions (as defined in the ISO standard), a C library might (and usually does) implement further functionality, which might or might not be defined by some standard. The standard C library says nothing about networking, for example. For Unix-alike systems, the POSIX standard defines what is expected from a C library; other systems might differ fundamentally.
 
It should be noted that, in order to implement its functionality, the C library must call kernel functions through system calls. So, for your own OS, you can of course take a ready-made C library and just recompile it for your OS - but that requires that you tell the library how to call your kernel functions, and your kernel to actually provide those functions. The good news is that [http://sourceware.org/newlib/libc.html#SEC195 relatively few of the library's functions do use some system call].
 
Available libraries include the [http://www.gnu.org/software/libc/ GNU C library] (with info about porting the glibc), [http://sources.redhat.com/newlib/ newlib] (with info on the required OS functions detailed in the manual), and [http://www.uclibc.org/ uClibC] (although that is highly optimized to be used with an embedded Linux).
 
It should also be noted that in most cases you can not use a usermode C library directly in your kernel as kernel code needs to be compiled specially. Things such as malloc, free, memcpy need to implemented by you before being used. In GCC the "--nobuiltin" flag tells GCC to not use pre-existing builtin functions such as memcpy.
 
== Things C can't do==
Line 36:
== See also ==
 
* [http://wiki.osdev.org/[Books#C |Learning C]]
* [[C preprocessor]]
* [[C++]]
* [[C MinusMinus|C--]]
* [[Bare Bones]]
 
[[Category:C]]
[[Category:Languages]]
[[de:C]]
241

edits