ホームページ >バックエンド開発 >C++ >コマンドライン引数に関する C の `main()` と `_tmain()` の違いは何ですか?

コマンドライン引数に関する C の `main()` と `_tmain()` の違いは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-17 19:10:13471ブラウズ

What's the Difference Between `main()` and `_tmain()` in C   Regarding Command-Line Arguments?

C の _tmain() と main() の違いは何ですか?

C を使用する場合、プログラムには main() または _tmain() のいずれかを使用できます。エントリ。どちらも同様の目的を果たしますが、引数の処理方法を変える重要な違いがあります。

main() について

C 標準によれば、main はプログラムの指定されたエントリ ポイントです。これは 2 つのシグネチャのいずれかに従います:

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

ここで、argc はコマンドライン引数の数を示し、argv は引数を含む文字配列の配列です。

_tmain(一方、

_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 プログラミングを始めるとき、次のような問題に直面することになります。いくつかの選択肢:

  • 明示的 Unicode: wmain を使用、 CreateWindowW、wchar_t など。
  • Unicode を明示的に無効にする: main、CreateWindowA、char を使用します。
  • 両方を許可する: _tmain、CreateWindow、 TCHAR (で定義されたマクロ) windows.h).

結論

_tmain と C のメイン アドレス プログラム エントリですが、 _tmain は Unicode を処理する Microsoft 拡張機能です。引数を扱う場合、_tmain には wchar_t が必要ですが、main は char を使用して動作します。これらの違いを理解することは、C アプリケーションをスムーズに実行するために非常に重要です。

以上がコマンドライン引数に関する C の `main()` と `_tmain()` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。