From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 935 invoked by alias); 29 Nov 2011 10:23:07 -0000 Received: (qmail 926 invoked by uid 22791); 29 Nov 2011 10:23:06 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-qy0-f171.google.com (HELO mail-qy0-f171.google.com) (209.85.216.171) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 29 Nov 2011 10:22:50 +0000 Received: by qyk29 with SMTP id 29so1976800qyk.2 for ; Tue, 29 Nov 2011 02:22:50 -0800 (PST) MIME-Version: 1.0 Received: by 10.229.59.146 with SMTP id l18mr5350980qch.260.1322562169601; Tue, 29 Nov 2011 02:22:49 -0800 (PST) Received: by 10.229.104.201 with HTTP; Tue, 29 Nov 2011 02:22:49 -0800 (PST) In-Reply-To: References: Date: Tue, 29 Nov 2011 12:11:00 -0000 Message-ID: Subject: Re: How to get std::strtoull (unsigned long long)? From: Csaba Raduly To: cygwin@cygwin.com, MSELVE@de.ibm.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com X-SW-Source: 2011-11/txt/msg00438.txt.bz2 On Tue, Nov 29, 2011 at 11:04 AM, Markus Selve wrote: > > Hello, > > I'm trying to use std::strtoull in a C++ program, but compiling it I get: > > =A0error: 'strtoull' is not a member of 'std' > > It works, if I use strtoul ('unsigned long' versus 'unsigned long long' > above). > Cygwin uses newlib and I checked the documentation on the newlib homepage: > It provides both the 'unsigned long' and the 'unsigned long long' version. > Also cygwin/gcc allows to use 'unsigned long long' variables. =A0So it's = not > that everything related 64 bit is not available, because I'm compiling for > a 32bit Windows. =A0Is there a special option I should use to get access = to > more 64 bit methods? > > Here is a simple test program to show the effect: > > #include > > int main(int argc, char** argv) > { > =A0 =A0unsigned long long l =3D 0; > > =A0 =A0l =3D std::strtoull("0x100", NULL, 16); > > =A0 =A0return 0; > } > > > This is the call to the compiler: > > $ g++ -Wall -o tt tt.cpp > tt.cpp: In function 'int main(int, char**)': > tt.cpp:7:9: error: 'strtoull' is not a member of 'std' > > > Here is my version of cygwin and gcc / g++: > CYGWIN_NT-5.1 XXXXXXXX 1.7.9(0.237/5/3) 2011-03-29 10:10 i686 Cygwin > g++ (GCC) 4.5.3 > Alas, cstdlib is missing the necessary using directive: $ g++ -E strtoull.cpp | grep strto # 1 "strtoull.cpp" # 1 "strtoull.cpp" char * _strtok_last; double __attribute__((__cdecl__)) strtod (const char *__n, char **__end_PTR= ); double __attribute__((__cdecl__)) _strtod_r (struct _reent *,const char *__n, char **__end_PTR); float __attribute__((__cdecl__)) strtof (const char *__n, char **__end_PTR); long __attribute__((__cdecl__)) strtol (const char *__n, char **__end_PTR, int __base); long __attribute__((__cdecl__)) _strtol_r (struct _reent *,const char *__n, char **__end_PTR, int __base); unsigned long __attribute__((__cdecl__)) strtoul (const char *__n, char **__end_PTR, int __base); unsigned long __attribute__((__cdecl__)) _strtoul_r (struct _reent *,const char *__n, char **__end_PTR, int __base); long long __attribute__((__cdecl__)) strtoll (const char *__n, char **__end_PTR, int __base); long long __attribute__((__cdecl__)) _strtoll_r (struct _reent *, const char *__n, char **__end_PTR, int __base); unsigned long long __attribute__((__cdecl__)) strtoull (const char *__n, char **__end_PTR, int __base); unsigned long long __attribute__((__cdecl__)) _strtoull_r (struct _reent *, const char *__n, char **__end_PTR, int __base); using ::strtod; using ::strtol; using ::strtoul; # 1 "strtoull.cpp" 2 So although stdlib.h defines strtoull, it is not made a member of namespace= std. --=20 GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++ The Tao of math: The numbers you can count are not the real numbers. Life is complex, with real and imaginary parts. "Ok, it boots. Which means it must be bug-free and perfect. " -- Linus Torv= alds "People disagree with me. I just ignore them." -- Linus Torvalds -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple