On 10/10/2014 02:37 PM, Chuck Forsberg WA7KGX wrote: > > On 10/10/2014 07:45 AM, Jakub Jelinek wrote: >> On Fri, Oct 10, 2014 at 07:23:02AM -0700, Chuck Forsberg WA7KGX wrote: >>> Why does this program fragment fail to compile if a C standard >>> is specified? I compiles without complaint with a simple cc -c qq.c >> You chose a strict conformance mode, in which sys/stat.h doesn't provide >> those. You need either -D_XOPEN_SOURCE, -D_GNU_SOURCE, -D_DEFALT_SOURCE >> etc. feature test macros (see info libc on it), or -std=gnu11 (or >> -std=gnu99, -std=gnu89 etc.). >> >> Jakub > Where is S_IFMT et al. defined in strict conformance mode? No where. C does not define S_IFMT, so strict conformance means limiting yourself to the symbols defined by C, therefore attempting to use something the standard does not call out should be an error, as you found out. > Why not in sys/stat.h? Because in strict conformance mode, sys/stat.h must not pollute the environment. You usually DON'T want to compile in strict conformance mode, if you have any likelihood of using extensions. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- test mailing list test@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe: https://admin.fedoraproject.org/mailman/listinfo/test