Connecting Tech Pros Worldwide Help | Site Map

wchar_t

  #1  
Old September 28th, 2006, 12:45 AM
Jens Theisen
Guest
 
Posts: n/a
Hello,

does anyone know which layer is responsible for defining the size of
wchar_t?

Naturally enough, it's not defined in the language. I looked in the
SystemV processor supplement and the Itanium C++ ABI which are
authorative for my platform, but there is no mentioning of this.

The manual of the compiler I'm using, gcc, doesn't tell me either.

Does anyone know more?

Cheers,

Jens
  #2  
Old September 28th, 2006, 01:15 AM
P.J. Plauger
Guest
 
Posts: n/a

re: wchar_t


"Jens Theisen" <jth02@arcor.dewrote in message
news:87ven8oohs.fsf@arcor.de...
Quote:
does anyone know which layer is responsible for defining the size of
wchar_t?
>
Naturally enough, it's not defined in the language.
Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
tells you the size of wchar_t.

P.J. Plauger
Dinkumware, Ltd.
http://www.dinkumware.com


  #3  
Old September 28th, 2006, 02:05 AM
Alan Johnson
Guest
 
Posts: n/a

re: wchar_t



P.J. Plauger wrote:
Quote:
"Jens Theisen" <jth02@arcor.dewrote in message
news:87ven8oohs.fsf@arcor.de...
>
Quote:
does anyone know which layer is responsible for defining the size of
wchar_t?

Naturally enough, it's not defined in the language.
>
Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
tells you the size of wchar_t.
>
The part that does not seem natural to me is the name "wchar_t". We
don't have types "int_t", "char_t", "bool_t", etc. I'm sure there is a
good reason for "wchar_t" instead of "wchar", but that doesn't mean it
isn't still ugly.

--
Alan Johnson

  #4  
Old September 28th, 2006, 02:25 AM
Larry Smith
Guest
 
Posts: n/a

re: wchar_t


Alan Johnson wrote:
Quote:
P.J. Plauger wrote:
Quote:
>"Jens Theisen" <jth02@arcor.dewrote in message
>news:87ven8oohs.fsf@arcor.de...
>>
Quote:
>>does anyone know which layer is responsible for defining the size of
>>wchar_t?
>>>
>>Naturally enough, it's not defined in the language.
>Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
>tells you the size of wchar_t.
>>
>
The part that does not seem natural to me is the name "wchar_t". We
don't have types "int_t", "char_t", "bool_t", etc. I'm sure there is a
good reason for "wchar_t" instead of "wchar", but that doesn't mean it
isn't still ugly.
>
Because it is a typedef, rather than a built-in native type.(?)
That puts it in the same category as 'int16_t', 'int32_t', etc
from 'stdint.h', size_t, fpos_t, ptrdiff_t, etc, etc.
  #5  
Old September 28th, 2006, 02:45 AM
Alan Johnson
Guest
 
Posts: n/a

re: wchar_t



Larry Smith wrote:
Quote:
Alan Johnson wrote:
Quote:
P.J. Plauger wrote:
Quote:
"Jens Theisen" <jth02@arcor.dewrote in message
news:87ven8oohs.fsf@arcor.de...
>
>does anyone know which layer is responsible for defining the size of
>wchar_t?
>>
>Naturally enough, it's not defined in the language.
Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
tells you the size of wchar_t.
>
The part that does not seem natural to me is the name "wchar_t". We
don't have types "int_t", "char_t", "bool_t", etc. I'm sure there is a
good reason for "wchar_t" instead of "wchar", but that doesn't mean it
isn't still ugly.
>
Because it is a typedef, rather than a built-in native type.(?)
That puts it in the same category as 'int16_t', 'int32_t', etc
from 'stdint.h', size_t, fpos_t, ptrdiff_t, etc, etc.
According to 2.11.1 wchar_t is a keyword. It has the restriction that
it must have the same storage and alignment requirements as some other
integral type, like it would if it were a typedef, but it is in fact a
first class type.

--
Alan Johnson

  #6  
Old September 28th, 2006, 05:25 AM
Jerry Coffin
Guest
 
Posts: n/a

re: wchar_t


In article <RGFSg.3421$Kw1.2848@trnddc05>, lsmith@nospam.com says...

[ ... why 'wchar_t' instead of 'wchar' ?]
Quote:
Because it is a typedef, rather than a built-in native type.(?)
That puts it in the same category as 'int16_t', 'int32_t', etc
from 'stdint.h', size_t, fpos_t, ptrdiff_t, etc, etc.
In C++, it's a native type -- but when originally devised as part of the
C89 standard, it was a typedef.

--
Later,
Jerry.

The universe is a figment of its own imagination.
  #7  
Old September 28th, 2006, 12:35 PM
Ron Natalie
Guest
 
Posts: n/a

re: wchar_t


Alan Johnson wrote:
Quote:
The part that does not seem natural to me is the name "wchar_t". We
don't have types "int_t", "char_t", "bool_t", etc. I'm sure there is a
good reason for "wchar_t" instead of "wchar", but that doesn't mean it
isn't still ugly.
>
It's because it came relatively later in the history of C and C++.
In C it is a typedef typically. In C++ in needs to be a real type.
  #8  
Old September 28th, 2006, 11:25 PM
Jens Theisen
Guest
 
Posts: n/a

re: wchar_t


"P.J. Plauger" <pjp@dinkumware.comwrites:
Quote:
Quote:
Naturally enough, it's not defined in the language.
>
Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
tells you the size of wchar_t.
I think I was quite explicit in my posting that I'm not wondering
about how big it is, but where it's defined.

Regards,

Jens
  #9  
Old September 29th, 2006, 02:35 AM
Gavin Deane
Guest
 
Posts: n/a

re: wchar_t



Jens Theisen wrote:
Quote:
"P.J. Plauger" <pjp@dinkumware.comwrites:
>
Quote:
Quote:
Naturally enough, it's not defined in the language.
Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
tells you the size of wchar_t.
>
I think I was quite explicit in my posting that I'm not wondering
about how big it is, but where it's defined.
3.9.1/5
Type wchar_t is a distinct type whose values can represent distinct
codes for all members of the largest extended character set specified
among the supported locales (22.1.1). Type wchar_t shall have the same
size, signedness, and alignment requirements (3.9) as one of the other
integral types, called its underlying type.

So, just like any other integral type, if you want to know the actual
size in your implementation, you need to consult your implementation.
sizeof L'x' is one easy way to do that. The answer may be different for
diifferent implementations.

Gavin Deane

  #10  
Old September 29th, 2006, 02:45 AM
Victor Bazarov
Guest
 
Posts: n/a

re: wchar_t


Gavin Deane wrote:
Quote:
Jens Theisen wrote:
Quote:
>"P.J. Plauger" <pjp@dinkumware.comwrites:
>>
Quote:
>>>Naturally enough, it's not defined in the language.
>>>
>>Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
>>tells you the size of wchar_t.
>>
>I think I was quite explicit in my posting that I'm not wondering
>about how big it is, but where it's defined.
>
3.9.1/5
Type wchar_t is a distinct type whose values can represent distinct
codes for all members of the largest extended character set specified
among the supported locales (22.1.1). Type wchar_t shall have the same
size, signedness, and alignment requirements (3.9) as one of the other
integral types, called its underlying type.
>
So, just like any other integral type, if you want to know the actual
size in your implementation, you need to consult your implementation.
sizeof L'x' is one easy way to do that. The answer may be different
for diifferent implementations.
I'd probably use 'std::numeric_limits<wchar_t>' or traits template
specialised on 'wchar_t' to find out more about it, not 'sizeof'.
After all, sizeof(int), sizeof(unsigned), sizeof(long) and sizeof(
unsigned long), are all the same on many 32-bit platforms I know.

V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask


  #11  
Old September 29th, 2006, 07:25 PM
Jens Theisen
Guest
 
Posts: n/a

re: wchar_t


"Gavin Deane" <deane_gavin@hotmail.comwrites:
Quote:
So, just like any other integral type, if you want to know the actual
size in your implementation [...]
I quote from my last posting:
Quote:
I think I was quite explicit in my posting that I'm not wondering
about how big it is, but where it's defined.
You just told me that's it's not defined in the language:
Quote:
>, you need to consult your implementation.
sizeof L'x' is one easy way to do that. The answer may be different for
diifferent implementations.
something which I have already stated in my first posting!

Regards,

Jens
  #12  
Old September 30th, 2006, 02:55 AM
P.J. Plauger
Guest
 
Posts: n/a

re: wchar_t


"Jens Theisen" <jth02@arcor.dewrote in message
news:87r6xvobo2.fsf@arcor.de...
Quote:
"P.J. Plauger" <pjp@dinkumware.comwrites:
>
Quote:
Quote:
Naturally enough, it's not defined in the language.
>>
>Naturally enough, it is. L'x' has type wchar_t, so sizeof L'x'
>tells you the size of wchar_t.
>
I think I was quite explicit in my posting that I'm not wondering
about how big it is, but where it's defined.
What you said was:

: does anyone know which layer is responsible for defining the size of
: wchar_t?
:
: Naturally enough, it's not defined in the language.

P.J. Plauger
Dinkumware, Ltd.
http://www.dinkumware.com


  #13  
Old September 30th, 2006, 11:15 AM
Gavin Deane
Guest
 
Posts: n/a

re: wchar_t



Jens Theisen wrote:
Quote:
"Gavin Deane" <deane_gavin@hotmail.comwrites:
>
Quote:
So, just like any other integral type, if you want to know the actual
size in your implementation [...]
>
I quote from my last posting:
>
Quote:
I think I was quite explicit in my posting that I'm not wondering
about how big it is, but where it's defined.
>
You just told me that's it's not defined in the language:
>
Quote:
, you need to consult your implementation.
sizeof L'x' is one easy way to do that. The answer may be different for
diifferent implementations.
>
something which I have already stated in my first posting!
So you already knew that the language does not specify the exact number
of bits or bytes or octets or whatever in a wchar_t. And you already
know that this implies that the size of wchar_t might be different in
different implementations of the language. Since the suggestion that
one way of finding out the size of wchar_t in your implementation is to
do sizeof L'x' didn't seem to satisfy you, you presumably aren't asking
"How do I find out the size of wchar_t in my implementation?"

You originally asked "does anyone know which layer is responsible for
defining the size of
wchar_t?". I don't know what that question means. What do you mean by
"layer"? The only sensible question I can think of in this context is,
"How do I find out the size of wchar_t in my implementation?". So when
I read your post, I couldn't understand your question as you wrote it,
but I assumed you were asking "How do I find out the size of wchar_t in
my implementation?" because that is the only question I could think
that you might be trying to ask.

Is that your question? Or is it something else? Or has it been answered
already?

Gavin Deane

Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
signed/unsigned wchar_t john answers 3 September 13th, 2007 09:45 AM
Problem using wchar_t and wprintf Rui Maciel answers 8 March 2nd, 2007 08:45 PM
UTF-16 & wchar_t: the 2nd worst thing about C++ Steven T. Hatton answers 23 March 12th, 2006 01:05 AM
/Tc:wchar_t cause C2371 in MAPIDefS.h & WinNT.h Mark Fancy answers 1 November 16th, 2005 10:46 PM
Trying to get wchar_t... from a lookup array but type error... pls help! Julius Mong answers 3 July 22nd, 2005 08:15 AM