メインでマクロを作成しており、コンパイル時に/ SUBSYSTEM:WINDOWSまたは/ SUBSYSTEM:CONSOLEで選択したサブシステムをチェックする必要があります。メイン機能。これを達成するために私が確認できる#defineがありますか?サブシステムに関連する#defineがあります
答えて
ライブラリのユーザー(またはそれが何であれ)を簡単にする場合は、マクロからWinMain
とmain
の両方を生成できます。デフォルトではリンカはコンソールアプリケーションをmain
から開始し、win32アプリケーションはWinMain
から開始するように設定します。他の "main"関数は無視されます。
は、(それが両方で動作するようにだ場合はおそらく、コードの残りの部分は、メイン関数の引数(argc
、argv
、hInstance
、など)のいずれかを使用しません。)
_CONSOLE
を定義し使用することができただし、自動的には表示されません。手動でプロジェクトのプロパティに追加する必要があります。一方、起動シンボルの選択は自動的に行われます。プロジェクトの作成者は何も設定する必要はなく、実際に行う必要はなく、ウィンドウからコンソールアプリケーション(場合によってはコンフィグレーションごとに)に切り替えることができるため、リンカーが選択するだけで、両方の機能を提供するだけで作業が楽になるかもしれません何でも
_CONSOLE
あなたのためのトリックを行う必要があります。
実際にこのルートに移動する場合は、#pragma comment(linker, "/subsystem:windows")
またはを使用してサブシステムを選択することもできます。
これは間違いなく、システムを手動で指定するという対話とリンカが決定する(またはプロジェクト設定を変更する)という、元の質問に直接答えるので、より良い答えです。 –
どのように '_CONSOLE'が定義されますか? – jww
これは実際の動作ではありません。あなたは、コンソールアプリケーションとネイティブWindowsアプリケーションとで劇的に異なるコードを書く必要があります。コンソールアプリケーションでは、printfまたはcoutを使用して出力を生成しますが、マウスの場合はあまり使用しません。ネイティブのWindowsアプリケーションでは、メッセージループが必要で、WM_PAINTメッセージを検出してウィンドウを更新するウィンドウプロシージャを持つウィンドウを作成する必要があります。 Etcetera。
しかし、両方を行うコードを書くことができます。 main()とWinMain()関数の両方を書くだけで、CRTは自動的に正しいものを呼び出します。
+1:両方の機能を書いています。 – Puppy
あなたが作ったステートメントは真実ですが、それらはすべての話を伝えません。コンソールサブシステムの有無にかかわらず機能するアプリケーションを、いくつかの小さなtweeksを使って書くことが可能です。通常、これはウィンドウレスアプリケーション(または単にMessageBoxを呼び出すことがあります)であり、UIスレッドを持ちません。標準のパイプはコンソール以外のアプリケーションでも利用できますが、リダイレクトされない限り出力は見られません。 – Tergiver
確かに。すべての私のアプリケーションはデバッグビルドのコンソールアプリケーションであり、基本的に6行の余分なコードがあります: 'WinMain(0,0,0,0)を返す '、すべてが' #ifdef _CONSOLE'の中にあるmain関数です。あなたは本当に '#ifdef'を必要としません。 –
- 1. Entity Frameworkオブジェクトに関連するデータがありません
- 2. SQLスクリプト - #defineに相当するものはありますか?
- 3. UMLインターフェイスにクラスとの関連付けがありますか?
- 4. プログラミング関連のディスカッションに適したコミュニケーションツールがありますか?
- 5. getNLMultibuttonに関連するライブラリはありますか?
- 6. セーフケッカーのフォームに関連するエントリーはありますか?
- 7. アクセスドッカーは、ここに関連する投稿がありマック
- 8. NullPointerExceptionがInheritableThreadLocalに関連している可能性があります
- 9. ソープサーバーパフォーマンスの問題(SQLiteに関連する可能性があります)
- 10. Rails Spreeのデバッグ。データベース関連の可能性があります
- 11. タッチデバイスのコンテキストでMouseMoveイベントの関連性があります
- 12. WPFはWindows 8と関連がありますか?
- 13. Tkinterトレースに関連するコールバック関数の制限はありますか?
- 14. Cプリプロセッサ連結#defineの外
- 15. ポータブルクラスライブラリプロファイル78属性に関連するメソッド/プロパティがありません
- 16. あまり意味がないと思われる関連
- 17. EKEventに関連する「コメント」にアクセスする方法はありますか?
- 18. xcodeプロジェクトや#defineセクションを複製する必要がありますか?
- 19. usercontrolに関数を関連付ける方法はありますか?
- 20. 連絡先に連絡があります
- 21. typeclassesに関連したランタイムのペナルティはありますか?
- 22. 多型関連を削除する必要がありますか?
- 23. 関連の両側から削除する必要がありますか?
- 24. IMAGE_FILE_REMOVABLE_RUN_FROM_SWAPまたはIMAGE_FILE_NET_RUN_FROM_SWAPに関連するリスクはありますか?
- 25. com.ibm.websphere.asynchbeans.Workに関連する.jarファイルはどこにありますか?
- 26. Firebugの要素に関連するCSSルールはどこにありますか?
- 27. 最適化には多くのレコード関連クエリがあります
- 28. BizTalk BAMポータル「関連ドキュメント」がありません
- 29. 多型関連レールのパスヘルパーがありません3
- 30. JavaScriptネームスペースの使用に関連する危険性はありますか?
メイン関数を生成するべきではありません。なぜなら、それを生成することは自分自身にとって無益であり、他の人には妨げになるからです。私。それには負の効用があります。しかし、もしあなたが 'main'関数を生成するのが好きなら、標準の' main' *を生成してください。それはビルドのサブシステムに関係なくうまく動作します。注意:MFCアプリケーションをやっているのでなければ、この部門で少し挑戦しているMicrosoftツールでは、リンカオプション '/ entry:mainCRTStartup'を設定します。この場合、あなたは他人(つまりMicrosoft) 'main'を引き継ぐのと同じ本当に悪いアイディアを持っていた。 –