Rumah > pembangunan bahagian belakang > C++ > Apakah Perbezaan Antara `_tmain()` dan `main()` dalam C untuk Pengendalian Unikod?

Apakah Perbezaan Antara `_tmain()` dan `main()` dalam C untuk Pengendalian Unikod?

Linda Hamilton
Lepaskan: 2024-12-17 06:16:25
asal
941 orang telah melayarinya

What's the Difference Between `_tmain()` and `main()` in C   for Unicode Handling?

Apakah Perbezaan Antara _tmain() dan main() dalam C ?

Dalam C , fungsi main() berfungsi sebagai titik masuk program, menerima satu daripada dua tandatangan:

int main();
int main(int argc, char* argv[]);
Salin selepas log masuk

Sebagai alternatif, Microsoft telah memperkenalkan sambungan untuk menampung Sokongan Unicode:

int wmain(int argc, wchar_t* argv[]);
int _tmain(int argc, char *argv[]);
Salin selepas log masuk

_tmain() lwn. main()

Perbezaan utama antara _tmain() dan main() terletak pada penggunaannya dengan Unicode. Jika Unicode didayakan, _tmain() disusun sebagai wmain(), membenarkannya mengendalikan rentetan wchar_t. Jika tidak, ia lalai kepada main().

Memahami Tafsiran Watak

Dalam contoh anda, menggunakan _tmain() dengan hujah char* membawa kepada kelakuan yang tidak dijangka kerana aksara ditafsirkan secara berbeza. UTF-16, yang digunakan oleh Windows apabila Unicode didayakan, mewakili aksara ASCII sebagai sepasang bait, dengan nilai ASCII diikuti dengan bait nol.

Disebabkan sifat kecil-endian CPU x86, ini bait ditukar, menghasilkan nilai ASCII diikuti dengan sifar (bait nol). Memandangkan rentetan aksara lazimnya ditamatkan dengan bait nol, program anda mentafsir setiap hujah sebagai rentetan aksara tunggal.

Penyelesaian

Untuk menyelesaikannya, anda mempunyai tiga pilihan:

  1. Gunakan Unikod Secara Eksplisit: Panggil wmain() dan gunakan wchar_t untuk rentetan.
  2. Lumpuhkan Unikod Secara Eksplisit: Panggil main() dan gunakan char untuk rentetan.
  3. Benarkan Kedua-duanya: Panggil _tmain() dan gunakan TCHAR sebagai makro untuk jenis rentetan.

Ingat bahawa sambungan dan konsep ini adalah khusus untuk Microsoft dan bukan sebahagian daripada standard C .

Atas ialah kandungan terperinci Apakah Perbezaan Antara `_tmain()` dan `main()` dalam C untuk Pengendalian Unikod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan