Ben örnek olark verdiğiniz programları wchar kullanarak çalıştırdığımda code::blocks stdio.d modülünü açarak aşağıdaki satırı hata olarak gösteriyor.dchar olarak denediğimde de çalışma anında "access violation" hatası alıyorum.
FPUTC(c, backend);
wchar için Verdiği hata mesajları;
924|Error: undefined identifier backend|
924|Error: function std.stdio._fputc_nlock (int, _iobuf*) does not match parameter types (wchar,int)|
924|Error: cannot implicitly convert expression (backend) of type int to _iobuf*|
Yukarıdaki satırın bulunduğu kodun satırları aşağıdaki gibi.
else static if (c.sizeof == 2)
{
if (orientation <= 0)
{
if (c <= 0x7F)
{
FPUTC(c, backend);
}
else
{
char[4] buf;
auto b = std.utf.toUTF8(buf, c);
foreach (i ; 0 .. b.length)
FPUTC(b[i], backend);
}
}
else
{
FPUTWC(c, backend);
}
}
Alıntı (acehreli):
>> import std.stdio;
> import std.cstream;
>
> void main()
> {
> char karakter;
> din.readf(&karakter);
> writeln(karakter);
> }
> ```
>
Yukarıdaki kod bende hatasız olarak çalışıyor 'ğ' girince ekrana aynı şekilde 'ğ' yazdırıyor.Tiplerin bayt değerler aşağıdaki gibi.
char.sizeof ==> 1
wchar.sizeof ==> 2
dchar.sizeof ==> 4
Bu şartlar altında wchar ve dchar kullanınca doğru çalışmalı char kullanınca da problem çıkmalı. Ama tam tersi bir durum söz konusu :-/ . Acaba dediğiniz gibi biz mi bir şeyleri yanlış anlıyoruz ki :blush:
--
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]