请教高手们:extern "C" void WinMainCRTStartup()函数中不能使用assert函数
#define STRICT
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#include <assert.h>
void CenterText(HDC hDC, int x, int y, LPCTSTR szFace, LPCTSTR szMessage, int point)
{
HFONT hFont = CreateFont(- point * GetDeviceCaps(hDC, LOGPIXELSY) / 72,
0, 0, 0, FW_BOLD, TRUE, FALSE, FALSE,
ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS,
PROOF_QUALITY, VARIABLE_PITCH, szFace);
//assert(hFont);
HGDIOBJ hOld = SelectObject(hDC, hFont);
SetTextAlign(hDC, TA_CENTER | TA_BASELINE);
SetBkMode(hDC, TRANSPARENT);
SetTextColor(hDC, RGB(0, 0, 0xFF));
TextOut(hDC, x, y, szMessage, _tcslen(szMessage));
SelectObject(hDC, hOld);
DeleteObject(hFont);
}
const TCHAR szMessage[] = _T("Hello, World");
const TCHAR szFace[] = _T("Times New Roman");
#pragma comment(linker, "-merge:.rdata=.text")
#pragma comment(linker, "-align:512")
extern "C" void WinMainCRTStartup()
{
HDC hDC = GetDC( NULL );
//assert( hDC );
CenterText( hDC,GetSystemMetrics(SM_CXSCREEN) / 2,
GetSystemMetrics(SM_CYSCREEN) / 2,
szFace,szMessage,72);
ReleaseDC( NULL,hDC );
ExitProcess(0);
}
函数如上:把assert()屏蔽后,编译运行正常,但是如果放开assert()则链接不通过,请问这是为什么?这是windows图形编程中的一个例子。
还请高手详细解释解释。万分感谢