Hi ,<br><br>I have a basic question w.r.t wide char literals. In the platforms I am working on WIDE chars are of size 2 bytes however the L&quot;string&quot; literals are of size wchar_t which is essentially 4 bytes.<br><br>
My application however expects UTF16 and thats why to make the following assignment work in the code <br><br>TCHAR    pSql[] = _T(&quot;SELECT NULL FROM DUAL&quot;);<br><br>typedef signed short        TCHAR;<br>typedef long int        wchar_t;<br>
<br>I am using the -fshort_wchar flag in the compile line . <br><br>The gcc compiler handles L as wchar_t string where wchar_t is of 2 bytes on 
Windows and of 4 <br>bytes on Unix. As application expects the unicode strings to be of 
type unsigned short - 2 bytes so to convert 2 bytes unicode string 
the -fshort-wchar flag was added. <br><br>However I figured out that <br><br>-fshort-wchar seems to be a 
compiler hack only available with gcc. <br>-fshort-wchar forces compiler (gcc) 
to treat wide charater literals as <br>unsigned short. Thats not a  part of 
language standards anyways. <br><br>This is has made my code non portable as equivalent flags are not available on other native compilers for Solaris, HPI and AIX.<br><br>If I remove the -fshort_wchar flag from the compile line I get errors like <br>
<br> error: a value of type &quot;long [22]&quot; cannot be used to initialize an entity of type &quot;TCHAR={signed short} []&quot;<br>    TCHAR    pSql[] = _T(&quot;SELECT NULL FROM DUAL&quot;);<br><br>Can somebody tell me a way of dealing with this conversion. I have to ensure that the L&quot;string&quot; treatment is that of a 2 byte quantity.<br>
<br>Thanks<br>-Neha<br><br><br><br><br>