windows下編程有兩種基本的程序:窗口程序和控制臺程序。它們的代碼入口分別是WinMain函數(shù)和main函數(shù)。但這個(gè)區(qū)別不是本質(zhì)的,代碼稍加改動main也能啟動窗口程序。窗口程序和控制臺程序的區(qū)別在于程序啟動時(shí),系統(tǒng)是否會啟動一個(gè)控制臺。這個(gè)區(qū)別在于連接時(shí)使用了不同的命令參數(shù)。
對于vc來說:
窗口程序:/SUBSYSTEM:WINDOWS
控制臺程序:/SUBSYSTEM:CONSOLE
對于gcc(Dev-Cpp)來說:
窗口程序:-mwindows
控制臺程序:-mconsole
如果參數(shù)不對,則會出現(xiàn)一些不想要的結(jié)果。如果控制臺程序參數(shù)不對,則看不到任何信息輸出,因?yàn)闆]有控制臺來顯示這些信息。如果窗口程序使用了/SUBSYSTEM:CONSOLE(VC)或-mconsole(gcc)則會在窗口程序外多出一個(gè)控制臺。
但對這些特性加以利用怎會幫助我們編程,我們可以在窗口程序中加入控制臺,跟蹤顯示程序運(yùn)行狀態(tài)。下面是一個(gè)非常簡單的例子,只需幾行代碼就可以達(dá)到想要的效果(這是針對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的使用方法一樣。運(yùn)行時(shí)就能在控制臺看到輸出的信息。