2016-07-14 9 views
1

私は現在、Windows 10のコンソールアプリケーションで作業していますが、main()エントリポイントが何であるべきなのか不思議です。ジェフリー・リヒターと69ページ(2007年)クリストフNasarreの "C/C++を経由してWindowsの" ではWin32コンソールアプリケーションの正しいエントリポイントは何ですか?

、それは述べて:

あなたのWindowsアプリケーションは、エントリポイント関数を持っている必要があります... Cのように/ C++開発者は、あなたが使用できる2つの可能なエントリポイント関数があります

int WINAPI _tWinMain(HINSTANCE hInstanceExe, HINSTANCE, PTSTR pszCmdLine, int nCmdShow); 

int _tmain(int argv, TCHAR *argv[], TCHAR *envp[]); 

本は、これらの2つのエントリ・ポイントが実際にかどうかに応じて、コンパイラによって異なるエントリポイントにマッピングされていることを識別するために行きますアプリケーションはGUIまたはコンソールであり、Un icodeが使用されます。

ユニコードを使用するWin32コンソールアプリケーションの正しいエントリポイントを使用したいので、私は(?)と仮定していますが、_tmainバージョンが必要です。ただし、Visual Studio 2015 Community Editionで新しいプロジェクトを開き、私は

int main() 

を使用すべきエントリポイント:「Win32コンソールアプリ」、次に「コンソールアプリケーション」を選択し、私は()私はLinuxでに慣れているように、メインで終わりますか?

+1

:あなたは前の回答ではこれについての詳細を読むことができます。 http://stackoverflow.com/questions/2438049/what-is-the-difference-between-wmain-and-main –

+0

リンクをありがとう。私は同意する - TCHAR(私がそれを理解しているように)、UNICODEがプロジェクトのdefine'd(VS 2015 CEのデフォルト値)ではwchar_tにマップされるだろうが、ANSIとUnicodeを心配する必要がある時から、 – VariableX

+2

'TCHAR'理論では、ansiまたはunicodeのためにコンパイルできます。実際には、あなたは両方のためにコンパイルすることはありませんか、またはあなたが変更する必要がある唯一のものではありません。 –

答えて

-2

第一のエントリポイント(または変化)は、通常GUI処理のために使用される:

int WINAPI _tWinMain(HINSTANCE hInstanceExe, HINSTANCE, PTSTR pszCmdLine, int nCmdShow); 

第二のエントリポイント(または変化)は、通常、コマンドライン処理のために使用される:

int _tmain(int argv, TCHAR *argv[], TCHAR *envp[]); 

エントリポイントは、/ ENTRYリンカオプションを使用して設定します。 Visual Studioでは、GUI /コンソールプロジェクトを作成するときにこれを設定します。また、変更する必要がない場合もあります。参照:https://msdn.microsoft.com/en-us/library/f9t8842e.aspx

_T接頭辞は、通常、tchar.hを使用するときに使用されます。これにより、アプリケーションは(理論的に)アプリケーションを "Ansi"またはUnicodeとして簡単にコンパイルできます。私は `wmain`を使用し、疫病のような` TCHAR`を避けたい

What is the difference between _tmain() and main() in C++?

+1

質問のエントリポイントと '/ ENTRY'リンカオプションで設定したエントリポイントは、異なるものです。前者はCRTによって使用される署名および記号であり、後者はOSローダによって見られる記号を指定する。 – IInspectable

関連する問題