概述
Windows程序的開頭都可看到:
#include windows.h
WINDOWS.H是一個最重要的頭文件,它包含了其他Windows頭文件,這些頭文件的某些也包含了其他頭文件。這些頭文件中最重要的和最基本的是:
WINDEF.H 基本數據類型定義。
WINNT.H 支持Unicode的類型定義。
WINBASE.H Kernel(内核)函數。
WINUSER.H 用戶界面函數。
WINGDI.H 圖形設備接口函數。
這些頭文件定義了Windows的所有資料型态、函數調用、資料結構和常數識别字,它們是Windows文件中的一個重要部分。
文件路徑:C:Program Files (x86)Microsoft SDKsWindowsv7.0AInclude。
文件
/* BUILD Version: 0001 Increment this if a change has global effects
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
windows.h
Abstract:
Master include file for Windows applications.
--*/
#ifndef _WINDOWS_
#define _WINDOWS_
#ifdef __BORLANDC__
#pragma defineonoption __BOROPT_A -A
#pragma defineonoption __BOROPT_H -H
#if (__BORLANDC__ == 0x550) defined(__BOROPT_A) defined(__BOROPT_H)
#error The use of both -A (ANSI mode) and -H (pre-compiled headers) at the same time is unsupported.
#endif
#endif /* __BORLANDC__ */
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#ifndef WINVER
#define WINVER 0x0501
#else
#if defined(_WIN32_WINNT) (WINVER 0x0400) (_WIN32_WINNT 0x0400)
#error WINVER setting conflicts with _WIN32_WINNT setting
#endif
#endif
#ifndef _INC_WINDOWS
#define _INC_WINDOWS
#if defined (_MSC_VER) (_MSC_VER = 1020)
#pragma once
#endif
/* If defined, the following flags inhibit definition
* of the indicated items.
*
* NOGDICAPMASKS - CC_*, LC_*, PC_*, CP_*, TC_*, RC_
* NOVIRTUALKEYCODES - VK_*
* NOWINMESSAGES - WM_*, EM_*, LB_*, CB_*
* NOWINSTYLES - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_*
* NOSYSMETRICS - SM_*
* NOMENUS - MF_*
* NOICONS - IDI_*
* NOKEYSTATES - MK_*
* NOSYSCOMMANDS - SC_*
* NORASTEROPS - Binary and Tertiary raster ops
* NOSHOWWINDOW - SW_*
* OEMRESOURCE - OEM Resource values
* NOATOM - Atom Manager routines
* NOCLIPBOARD - Clipboard routines
* NOCOLOR - Screen colors
* NOCTLMGR - Control and Dialog routines
* NODRAWTEXT - DrawText() and DT_*
* NOGDI - All GDI defines and routines
* NOKERNEL - All KERNEL defines and routines
* NOUSER - All USER defines and routines
* NONLS - All NLS defines and routines
* NOMB - MB_* and MessageBox()
* NOMEMMGR - GMEM_*, LMEM_*, GHND, LHND, associated routines
* NOMETAFILE - typedef METAFILEPICT
* NOMINMAX - Macros min(a,b) and max(a,b)
* NOMSG - typedef MSG and associated routines
* NOOPENFILE - OpenFile(), OemToAnsi, AnsiToOem, and OF_*
* NOSCROLL - SB_* and scrolling routines
* NOSERVICE - All Service Controller routines, SERVICE_ equates, etc.
* NOSOUND - Sound driver routines
* NOTEXTMETRIC - typedef TEXTMETRIC and associated routines
* NOWH - SetWindowsHook and WH_*
* NOWINOFFSETS - GWL_*, GCL_*, associated routines
* NOCOMM - COMM driver routines
* NOKANJI - Kanji support stuff.
* NOHELP - Help engine interface.
* NOPROFILER - Profiler interface.
* NODEFERWINDOWPOS - DeferWindowPos routines
* NOMCX - Modem Configuration Extensions
*/
#if defined(RC_INVOKED) !defined(NOWINRES)
#include winresrc.h
#else
#if defined(RC_INVOKED)
/* Turn off a bunch of stuff to ensure that RC files compile OK. */
#define NOATOM
#define NOGDI
#define NOGDICAPMASKS
#define NOMETAFILE
#define NOMINMAX
#define NOMSG
#define NOOPENFILE
#define NORASTEROPS
#define NOSCROLL
#define NOSOUND
#define NOSYSMETRICS
#define NOTEXTMETRIC
#define NOWH
#define NOCOMM
#define NOKANJI
#define NOCRYPT
#define NOMCX
#endif
#if defined(__BORLANDC__) defined(__cplusplus)
# include mem.h // Needed for protos of memxxx() routines
#endif
#if defined(__BORLANDC__)
# ifndef _WIN32_WINNT
# define _WIN32_WINNT 0x0500 /* If not set, assume NT 5.00 */
# endif
# if defined(__cplusplus)
# define NOMINMAX /* for WINDEF.H */
# else
# define NONAMELESSUNION /* for OAIDL.H, OBJIDL.H,... */
# endif
# if defined(_UNICODE)
# define UNICODE
# endif
#endif
#if !defined(_68K_) !defined(_MPPC_) !defined(_X86_) !defined(_IA64_) !defined(_AMD64_) defined(_M_IX86)
#define _X86_
#endif
#if !defined(_68K_) !defined(_MPPC_) !defined(_X86_) !defined(_IA64_) !defined(_AMD64_) defined(_M_AMD64)
#define _AMD64_
#endif
#if !defined(_68K_) !defined(_MPPC_) !defined(_X86_) !defined(_IA64_) !defined(_AMD64_) defined(_M_M68K)
#define _68K_
#endif
#if !defined(_68K_) !defined(_MPPC_) !defined(_X86_) !defined(_IA64_) !defined(_AMD64_) defined(_M_MPPC)
#define _MPPC_
#endif
#if !defined(_68K_) !defined(_MPPC_) !defined(_X86_) !defined(_M_IX86) !defined(_AMD64_) defined(_M_IA64)
#if !defined(_IA64_)
#define _IA64_
#endif // !_IA64_
#endif
#ifndef _MAC
#if defined(_68K_) || defined(_MPPC_)
#define _MAC
#endif
#endif
#if defined (_MSC_VER)
#if ( _MSC_VER = 800 )
#ifndef __cplusplus
#pragma warning(disable:4116) // TYPE_ALIGNMENT generates this - move it
// outside the warning push/pop scope.
#endif
#endif
#endif
#ifndef RC_INVOKED
#if ( _MSC_VER = 800 ) || defined(__BORLANDC__)
#pragma warning(disable:4514)
#ifndef __WINDOWS_DONT_DISABLE_PRAGMA_PACK_WARNING__
#pragma warning(disable:4103)
#endif
#if _MSC_VER = 1200
#pragma warning(push)
#endif
#pragma warning(disable:4001)
#pragma warning(disable:4201)
#pragma warning(disable:4214)
#endif
#include excpt.h
#include stdarg.h
#endif /* RC_INVOKED */
#include windef.h
#include winbase.h
#include wingdi.h
#include winuser.h
#if !defined(_MAC) || defined(_WIN32NLS)
#include winnls.h
#endif
#ifndef _MAC
#include wincon.h
#include winver.h
#endif
#if !defined(_MAC) || defined(_WIN32REG)
#include winreg.h
#endif
#ifndef _MAC
#include winnetwk.h
#endif
#ifndef WIN32_LEAN_AND_MEAN
#include cderr.h
#include dde.h
#include ddeml.h
#include dlgs.h
#ifndef _MAC
#include lzexpand.h
#include mmsystem.h
#include nb30.h
#include rpc.h
#endif
#include shellapi.h
#ifndef _MAC
#include winperf.h
#include winsock.h
#endif
#ifndef NOCRYPT
#include wincrypt.h
#include winefs.h
#include winscard.h
#endif
#ifndef NOGDI
#ifndef _MAC
#include winspool.h
#ifdef INC_OLE1
#include ole.h
#else
#include ole2.h
#endif /* !INC_OLE1 */
#endif /* !MAC */
#include commdlg.h
#endif /* !NOGDI */
#endif /* WIN32_LEAN_AND_MEAN */
#include stralign.h
#ifdef _MAC
#include winwlm.h
#endif
#ifdef INC_OLE2
#include ole2.h
#endif /* INC_OLE2 */
#ifndef _MAC
#ifndef NOSERVICE
#include winsvc.h
#endif
#if(WINVER = 0x0400)
#ifndef NOMCX
#include mcx.h
#endif /* NOMCX */
#ifndef NOIME
#include imm.h
#endif
#endif /* WINVER = 0x0400 */
#endif
#ifndef RC_INVOKED
#if ( _MSC_VER = 800 ) || defined(__BORLANDC__)
#if _MSC_VER = 1200
#pragma warning(pop)
#else
#pragma warning(default:4001)
#pragma warning(default:4201)
#pragma warning(default:4214)
/* Leave 4514 disabled. It's an unneeded warning anyway. */
#endif
#endif
#endif /* RC_INVOKED */
#endif /* RC_INVOKED */
#endif /* _INC_WINDOWS */
#pragma option pop /*P_O_Pop*/
#endif /* _WINDOWS_ */
作用
頭文件封裝了庫函數以及一些類,将一些複雜的工作由庫函數處理,而用戶不必把精力放在這些地方。比如說cout<<,為标準輸出流,其實說到底還是函數調用,不過這個函數有些特殊,用的是運算符重載,确切地說是重載了“<<”運算符,作用是将鍵盤輸入的在屏幕上打印出來,這個功能要是由我們去寫,估計也得學個兩三年才有可能。所以就簡化了操作。
而這一系列的函數都在頭文件中包含(是一個函數庫)。在調用時包涵後便可直接用。
頭文件一般包含以下幾類内容:
1、對類型的聲明。
2、函數聲明。
3、内置(inline)函數的定義。
4、宏定義。用#define定義的符号常量和用const聲明的常變量。
5、全局變量定義。
6、外部變量聲明。如entern int a;
6、還可以根據需要包含其他頭文件。
不同的頭文件包括以上不同的信息,提供給程序設計者使用,這樣,程序設計者不需自己重複書寫這些信息,隻需用一行#include命令就把這些信息包含到本文件了,大大地提高了編程效率。由于有了#include命令,就把不同的文件組合在一起,形成一個文件。因此說,頭文件是源文件之間的接口。
用法
C/C++ 程序在源文件前面寫 #include 即可。