Mail Archives: cygwin/2011/11/29/05:23:14
X-Recipient: | archive-cygwin AT delorie DOT com
|
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
|
MIME-Version: | 1.0
|
In-Reply-To: | <OFAEC4844B.D2808564-ONC1257957.0035691D-C1257957.00374E79@de.ibm.com>
|
References: | <OFAEC4844B DOT D2808564-ONC1257957 DOT 0035691D-C1257957 DOT 00374E79 AT de DOT ibm DOT com>
|
Date: | Tue, 29 Nov 2011 11:22:49 +0100
|
Message-ID: | <CAEhDDbDnBSxmVVfghsEaRrCa5a89ESAo_Pf6jMcVZh-Uq-STnQ@mail.gmail.com>
|
Subject: | Re: How to get std::strtoull (unsigned long long)?
|
From: | Csaba Raduly <rcsaba AT gmail DOT com>
|
To: | cygwin AT cygwin DOT com, MSELVE AT de DOT ibm DOT com
|
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm
|
List-Id: | <cygwin.cygwin.com>
|
List-Unsubscribe: | <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
|
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com>
|
List-Archive: | <http://sourceware.org/ml/cygwin/>
|
List-Post: | <mailto:cygwin AT cygwin DOT com>
|
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
|
Sender: | cygwin-owner AT cygwin DOT com
|
Mail-Followup-To: | cygwin AT cygwin DOT com
|
Delivered-To: | mailing list cygwin AT cygwin DOT com
|
X-MIME-Autoconverted: | from quoted-printable to 8bit by delorie.com id pATANA73004907
|
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:
>
> error: '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. So it's not
> that everything related 64 bit is not available, because I'm compiling for
> a 32bit Windows. Is 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 <cstdlib>
>
> int main(int argc, char** argv)
> {
> unsigned long long l = 0;
>
> l = std::strtoull("0x100", NULL, 16);
>
> return 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.
--
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 Torvalds
"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
- Raw text -