C を使用する場合、プログラムには main() または _tmain() のいずれかを使用できます。エントリ。どちらも同様の目的を果たしますが、引数の処理方法を変える重要な違いがあります。
C 標準によれば、main はプログラムの指定されたエントリ ポイントです。これは 2 つのシグネチャのいずれかに従います:
int main(); int main(int argc, char* argv[]);
ここで、argc はコマンドライン引数の数を示し、argv は引数を含む文字配列の配列です。
_tmain は、 Unicode (UTF-16) とマルチバイト文字セット間の移行。 Unicode が有効な場合、_tmain は wmain としてコンパイルされ、それ以外の場合は main としてコンパイルされます。
この問題は、_tmain 関数が適切に定義されていないために発生します。 Wmain は、char 引数ではなく、wchar_t 引数を受け入れるように設計されています。コンパイラは main に対してこのルールを適用しないため、wchar_t 文字列の配列が main 関数に渡され、それが char 文字列として解釈されます。
UTF-16 (Unicode が有効な Windows で使用される文字セット) 、ASCII 文字をバイトのペアとして表し、その後に ASCII 値が続きます。ただし、リトルエンディアンのバイト順序を使用する x86 CPU では、順序が逆になります。これは、文字列では文字列が null バイトで終了し、プログラムがシングルバイト文字列を識別することを意味します。
Windows プログラミングを始めるとき、次のような問題に直面することになります。いくつかの選択肢:
_tmain と C のメイン アドレス プログラム エントリですが、 _tmain は Unicode を処理する Microsoft 拡張機能です。引数を扱う場合、_tmain には wchar_t が必要ですが、main は char を使用して動作します。これらの違いを理解することは、C アプリケーションをスムーズに実行するために非常に重要です。
以上がコマンドライン引数に関する C の `main()` と `_tmain()` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。