Dalam C , fungsi main() berfungsi sebagai titik masuk program, menerima satu daripada dua tandatangan:
int main(); int main(int argc, char* argv[]);
Sebagai alternatif, Microsoft telah memperkenalkan sambungan untuk menampung Sokongan Unicode:
int wmain(int argc, wchar_t* argv[]); int _tmain(int argc, char *argv[]);
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().
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.
Untuk menyelesaikannya, anda mempunyai tiga pilihan:
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!