Aracılığıyla paylaş


Genel Veri Türlerini Kullanma

Kodunuzda genel veri türleri kullanıyorsanız, yalnızca üst bilgi dosyalarının #include deyimlerinden önce "UNICODE" tanımlamak üzere bir ön işlemci yönergesi kullanılarak Unicode için derlenebilir. Windows (ANSI) kod sayfalarının kodunu derlemek için "UNICODE" tanımını atlayın. Yeni Windows uygulamaları, çeşitli kod sayfalarının tutarsızlıklarını önlemek ve yerelleştirmeyi basitleştirmek için Unicode kullanmalıdır.

Unicode karakterleri ve dizeleri kullanmak veya Windows kod sayfalarından karakterler ve dizeler kullanmak üzere derlenebilir kaynak kodu oluşturmak için:

  1. Metin için kullanılan tüm karakter ve dize türleri için TCHAR, LPTSTR ve LPTCH gibi genel veri türlerini kullanın. Genel türler hakkında daha fazla bilgi için bkz. Dizeler için Windows Veri Türleri.

  2. Metin olmayan veri arabelleklerine veya ikili bayt dizilerine yönelik işaretçilerin LPTSTR veya LPTCH türü yerine LPBYTE veya LPWORD gibi veri türleriyle kodlandığından emin olun.

  3. LPVOID'i uygun şekilde kullanarak belirsiz türün işaretçilerini açıkça geçersiz işaretçiler olarak bildirin.

  4. İşaretçi aritmetiğini türden bağımsız hale getirin. TCHAR boyutu birimlerinin kullanılması, UNICODE tanımlanırsa 2 bayt, UNICODE tanımlanmadıysa 1 bayt olan değişkenleri verir. İşaretçi aritmetiği kullanıldığında, öğelerin boyutu 1 veya 2 bayt olsun, işaretçi tarafından belirtilen öğe sayısını her zaman döndürür. Aşağıdaki ifade, UNICODE'un tanımlanıp tanımlanmadığına bakılmaksızın her zaman öğe sayısını alır.

    cCount = lpEnd - lpStart;
    

    Aşağıdaki ifade, kullanılan bayt sayısını belirler.

    cByteCount = (lpEnd - lpStart) * sizeof(TCHAR);
    

    İşaretçi artışı sonraki karakter öğesine işaret ettiğinden, aşağıdaki gibi bir deyimi değiştirmeniz gerekmez.

    chNext = *++lpText;
    
  5. Sabit karakter dizelerini ve görünür karakter sabitlerini makrolarla değiştirin. Aşağıdaki gibi ifadeleri değiştirin.

    while(*lpFileName++ != '\\')
    {
        // ...
    }
    

    TEXT makroyu bu ifadede aşağıdaki gibi kullanın.

    while(*lpFileName++ != TEXT('\\'))
    {
        // ...
    }
    

    METİN makrosu, UNICODE tanımlandığında dizelerin L"dize" olarak ve aksi takdirde "dize" olarak değerlendirilmesine neden olur. Daha kolay yönetim için, özellikle ASCII aralığının (0x7F 0x00) dışında karakterler içeriyorsa veya kullanıcı arabiriminde kullanıma sunulduysa, değişmez dizeleri kaynaklara taşıyın. Uygulamanızın farklı ulusal diller için yerelleştirilmesini desteklemek için, tüm kullanıcı arabirimi dizelerinin yerelleştirilebilir kaynaklarda olması çok önemlidir.

  6. Windows işlevlerinin genel sürümlerini kullanın. Daha fazla bilgi için bkz. İşlev Prototipleri içinKuralları.

  7. C kitaplığının standart string (dize) fonksiyonlarının genel sürümlerini kullanın ve Standart C İşlevleri'nde açıklandığı gibi '_UNICODE' ile 'UNICODE' tanımladığınızdan emin olun.

  8. Başlangıçta Windows kod sayfaları için yazılmış bir uygulamayı uyarlarsanız, bir karakter için en büyük değer olarak 255'i kullanan tüm kodları değiştirmeyi unutmayın.

Yukarıda açıklandığı gibi yazdığınız kodu derlediğinizde, derleyici uygulamanızın hem Unicode hem de Windows kod sayfası sürümlerini aynı kaynaktan oluşturabilir. UNICODE tanımlarına bağlı olarak, genel işlevler yalnızca Unicode için veya yalnızca Windows kod sayfaları için kod yazdıysanız aynı ikili dosyaları üretmek üzere çözümlenir.

Unicode ve Karakter Kümelerini Kullanarak