On Wed, 7 Jul 2010, Martin Peach wrote:
No, they are preprocessor directives that go in a .c file. But you should not have to change the source code to get it to compile. Something else is wrong.
Typically, what is wrong, is that on some OSes and some versions of OSes, some #includes are invoked from some other #includes, in a way that may cause fstat() (for example) to be accidentally visible, when you're supposed to have to say #include <sys/stat.h>.
And yes, S_ISCHR is really in <linux/stat.h>. This choice of a different header is typically for things that are so OS-specific, that you wouldn't be able to use it if you used versions of the same tools (Free Software Foundation's) on any other OS ; whereas extensions that were added by Free Software Foundation in a way usable on OSX and Windows, would end up in the main header, and not the linux header.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard, Montréal, Québec. téléphone: +1.514.383.3801