C では、 main() 関数はプログラムのエントリ ポイントとして機能し、 2 つの署名のうち:
int main(); int main(int argc, char* argv[]);
代わりに、Microsoft は Unicode に対応する拡張機能を導入しました。 support:
int wmain(int argc, wchar_t* argv[]); int _tmain(int argc, char *argv[]);
_tmain() と main() の主な違いは、Unicode での使用法にあります。 Unicode が有効な場合、_tmain() は wmain() としてコンパイルされ、wchar_t 文字列を処理できるようになります。それ以外の場合は、デフォルトで main() になります。
この例では、char* 引数を指定して _tmain() を使用すると、文字が異なる方法で解釈されるため、予期しない動作が発生します。 Unicode が有効な場合に Windows で使用される UTF-16 は、ASCII 値の後に null バイトが続くバイトのペアとして ASCII 文字を表します。
x86 CPU のリトルエンディアンの性質により、これらはバイトが交換され、ASCII 値の後にゼロ (ヌル バイト) が続きます。通常、文字列は null バイトで終了するため、プログラムは各引数を単一文字の文字列として解釈します。
これを解決するには、次の 3 つのオプションがあります。
これらの拡張子とこの概念は Microsoft に固有のものであり、標準 C の一部ではありません。
以上がUnicode 処理のための C の `_tmain()` と `main()` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。