Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Antara `main()` dan `_tmain()` dalam Pengaturcaraan Windows C?

Apakah Perbezaan Antara `main()` dan `_tmain()` dalam Pengaturcaraan Windows C?

Barbara Streisand
Barbara Streisandasal
2024-12-17 15:55:10417semak imbas

What's the Difference Between `main()` and `_tmain()` in C   Windows Programming?

Perbezaan antara _tmain() dan main() dalam C

Dalam C , titik masuk program standard ialah main(), yang menerima salah satu daripada tandatangan ini:

int main();
int main(int argc, char* argv[]);

Microsoft, bagaimanapun, memperkenalkan sambungan yang dipanggil wmain(), yang menggantikan tandatangan kedua dengan:

int wmain(int argc, wchar_t* argv[]);

Untuk memudahkan peralihan antara Unicode (UTF-16) dan set aksara berbilangbaitnya, Microsoft juga mentakrifkan _tmain() yang, apabila Unicode didayakan, disusun sebagai wmain, dan sebaliknya sebagai main().

Perbezaan Antara Watak Pengendalian

Perbezaan antara main() dan _tmain() dalam contoh anda timbul daripada penggunaan main() yang salah. wmain() direka untuk menerima hujah wchar_t, manakala main() mengharapkan char. Memandangkan pengkompil lemah dalam menguatkuasakan jenis yang betul untuk main(), atur cara mentafsir tatasusunan rentetan wchar_t sebagai rentetan char.

Dalam UTF-16, aksara ASCII diwakili sebagai sepasang bait, dengan Nilai ASCII diikuti dengan bait nol. Memandangkan CPU x86 adalah little-endian, bait ini ditukar. Oleh itu, dalam rentetan aksara, yang ditamatkan nol, atur cara anda melihat satu siri rentetan, setiap satu bait panjang.

Pilihan untuk Pengaturcaraan Windows

Apabila bekerja dengan pengaturcaraan Windows, tiga pilihan utama tersedia:

  • Dayakan Unicode secara eksplisit dengan memanggil wmain(), menggunakan -W varian fungsi Windows API dan menggunakan wchar_t dan bukannya char.
  • Lumpuhkan Unicode secara eksplisit dengan memanggil main(), menggunakan -A varian fungsi Windows API dan menggunakan char untuk rentetan.
  • Benarkan kedua-duanya dengan memanggil _tmain(), menggunakan varian tanpa akhiran fungsi Windows API dan menggunakan TCHAR dan bukannya char/wchar_t.

Adalah penting untuk ambil perhatian bahawa sambungan khusus Microsoft ini tidak mematuhi standard C, dan oleh itu mungkin tidak disokong pada platform lain.

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

Kenyataan:
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