ホームページ > バックエンド開発 > C++ > C Windows プログラミングにおける「main()」と「_tmain()」の違いは何ですか?

C Windows プログラミングにおける「main()」と「_tmain()」の違いは何ですか?

Barbara Streisand
リリース: 2024-12-17 15:55:10
オリジナル
415 人が閲覧しました

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

C の _tmain() と main() の違い

C では、標準のプログラム エントリ ポイントは main() であり、これは次のシグネチャのいずれか:

int main();
int main(int argc, char* argv[]);
ログイン後にコピー

ただし、Microsoft は wmain() と呼ばれる拡張機能を導入しました。これにより、2 番目の署名が次のように置き換えられます:

int wmain(int argc, wchar_t* argv[]);
ログイン後にコピー

Unicode (UTF-16) とそのマルチバイト文字セット間の移行を容易にするために、Microsoft は Unicode が有効な場合に wmain としてコンパイルされる _tmain() も定義しました。 、それ以外の場合は main() として。

文字間の差異

の処理 あなたの例の main() と _tmain() の間の相違は、main() の誤った使用法から生じます。 wmain() は wchar_t 引数を受け入れるように設計されていますが、main() は char を想定しています。コンパイラは main() の正しい型の適用が緩いため、プログラムは wchar_t 文字列の配列を char 文字列として解釈します。

UTF-16 では、ASCII 文字はバイトのペアとして表されます。 ASCII 値の後に null バイトが続きます。 x86 CPU はリトルエンディアンであるため、これらのバイトはスワップされます。したがって、NULL で終了する文字列では、プログラムはそれぞれ 1 バイト長の一連の文字列を認識します。

Windows プログラミングのオプション

の場合Windows プログラミングを使用する場合、3 つの主要なオプションが利用可能です:

  • wmain() を呼び出して Unicode を明示的に有効にします。 Windows API 関数の -W バリアントを使用し、char の代わりに wchar_t を使用します。
  • main() を呼び出し、Windows API 関数の -A バリアントを使用し、文字列に char を使用することにより、Unicode を明示的に無効にします。
  • _tmain() の呼び出し、Windows API 関数のサフィックスのないバリアントの使用、および代わりに TCHAR の使用の両方を許可します。 char/wchar_t.

これらの Microsoft 固有の拡張機能は C 標準に準拠していないため、他のプラットフォームではサポートされない可能性があることに注意することが重要です。

以上がC Windows プログラミングにおける「main()」と「_tmain()」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート