Re: Unicode setting question
On Sat, 31 May 2008 12:10:13 +0200, "Giovanni Dicanio"
<giovanni.dicanio@invalid.com> wrote:
But if we focus on Windows desktop applications, I fail to understand
reasons why we can't have some ad hoc extensions to Microsoft C++ to make
code cleaner.
We are not asking to break the standard and assume 'char' = Unicode char.
We (Tom, David C., me...) are just asking to provide a simple compiler
switch, such that strings are assumed Unicode in Unicode builds.
So we don't need decorations.
If one wants to compile standard C++, he disables that option (let assume
default = 'disabled', so the standard people are more happy :)
But if one wants to build Windows-only desktop apps, he can turn this option
on, so he can just use "" for strings, and strings are considered Unicode.
How useful would this be, really? I don't use a lot of string literals that
aren't in resource files. Even if you don't care about the portability of
the code you write, all options like this have negative effects on third
party code you bring into your program. Existing examples include the /Zp
compiler option and /J. Options like these are purely desperate
compatibility options for naively or lazily written code, and they should
never be used merely for convenience by someone who knows better. I think
an option to change the type of string literals would fall into the same
category, except AFAIK, there is no existing practice for it to be
compatible with. Thus, it would just create new compatibility problems in
exchange for a very minor gain in convenience. As is often the case, "Nice
is different than good."
Moreover, IMHO the C++ standard is not very "standard" for Unicode things...
For example: on VC++, wchar_t is unisgned short (16 bits, fine for UTF-16);
but I read that on other platforms (maybe some flavours of Linux/Unix?)
wchar_t is 32 bits, because they use UTF-32. So, this "standard" is kind of
"flexible"...
Maybe that's because the C++ Standard doesn't mention Unicode. :)
--
Doug Harrison
Visual C++ MVP