小竅門:在窗口程序中加入控制臺顯示跟蹤信息
windows下編程有兩種基本的程序:窗口程序和控制臺程序。它們的代碼入口分別是WinMain函數和main函數。但這個區別不是本質的,代碼稍加改動main也能啟動窗口程序。窗口程序和控制臺程序的區別在于程序啟動時,系統是否會啟動一個控制臺。這個區別在于連接時使用了不同的命令參數。
對于vc來說:
窗口程序:/SUBSYSTEM:WINDOWS
控制臺程序:/SUBSYSTEM:CONSOLE
對于gcc(Dev-Cpp)來說:
窗口程序:-mwindows
控制臺程序:-mconsole
如果參數不對,則會出現一些不想要的結果。如果控制臺程序參數不對,則看不到任何信息輸出,因為沒有控制臺來顯示這些信息。如果窗口程序使用了/SUBSYSTEM:CONSOLE(VC)或-mconsole(gcc)則會在窗口程序外多出一個控制臺。
但對這些特性加以利用怎會幫助我們編程,我們可以在窗口程序中加入控制臺,跟蹤顯示程序運行狀態。下面是一個非常簡單的例子,只需幾行代碼就可以達到想要的效果(這是針對vc的例子,gcc需稍加改造)。
/* 文件名:console_trace.h */
/* 作用:在窗口程序中加入控制臺,便于跟蹤信息 */
#ifndef CONSOLE_TRACE_H
#define CONSOLE_TRACE_H

#define CONSOLE_TRACE
#ifdef CONSOLE_TRACE
#pragma comment(linker, "/SUBSYSTEM:CONSOLE")
#define console_trace printf
#else
#define console_trace
#endif /* CONSOLE_TRACE */

#endif /* CONSOLE_TRACE_H */
在你的代碼里加入console_trace.h頭文件,就可以使用console_trace,跟prinf的使用方法一樣。運行時就能在控制臺看到輸出的信息。
對于vc來說:
窗口程序:/SUBSYSTEM:WINDOWS
控制臺程序:/SUBSYSTEM:CONSOLE
對于gcc(Dev-Cpp)來說:
窗口程序:-mwindows
控制臺程序:-mconsole
如果參數不對,則會出現一些不想要的結果。如果控制臺程序參數不對,則看不到任何信息輸出,因為沒有控制臺來顯示這些信息。如果窗口程序使用了/SUBSYSTEM:CONSOLE(VC)或-mconsole(gcc)則會在窗口程序外多出一個控制臺。
但對這些特性加以利用怎會幫助我們編程,我們可以在窗口程序中加入控制臺,跟蹤顯示程序運行狀態。下面是一個非常簡單的例子,只需幾行代碼就可以達到想要的效果(這是針對vc的例子,gcc需稍加改造)。














在你的代碼里加入console_trace.h頭文件,就可以使用console_trace,跟prinf的使用方法一樣。運行時就能在控制臺看到輸出的信息。