open(O_RDWR) and lseek() fail

Eric Blake eblake@redhat.com
Fri Mar 28 17:00:00 GMT 2014


On 03/28/2014 06:53 AM, Nellis, Kenneth wrote:
> x.c:12:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘off_t’ [-Wformat=]
> 
> So, then, after changing %d to %lld, gcc -Wall -pedantic complains:

My advice: You usually do NOT want to compile with -pedantic.  That
option exists for programs that are sticking _strictly_ to the C
standard, but lseek() and off_t are not part of the C standard.  There
is no portable way to be pedantic to the C89 standard and simultaneously
use 64-bit offsets.  The situation is better in C99, since that
introduced 64-bit types.

If you want to use %lld, you have to use C99, not C89; use gcc -std=c99
or gcc -std=gnu99.  By omitting -std, you got gcc's default, which for
now is still -std=c89.

> Wondering how to printf an off_t value without the compiler complaining while
> using -Wall -pedantic.

You can't.  So drop the -pedantic.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://cygwin.com/pipermail/cygwin/attachments/20140328/e3b533a3/attachment.sig>


More information about the Cygwin mailing list