Windows Via C/C++£ºÏß³ÌʵÏÖϸ½Ú
ÎÒÃÇÒѾÁ˽âÈçºÎ¶¨ÒåÏß³ÌÈë¿Úµãº¯Êý¡¢µ÷ÓÃϵͳAPI´´½¨Ö´ÐÐÖ¸¶¨º¯ÊýµÄÏ̡߳£±¾½Ú½«½ÒʾÕâÒ»ÇÐÔÚϵͳÄÚ²¿ÊÇÈçºÎÍê³ÉµÄ¡£
ͼ6-1ÃèÊöÁËÏ̴߳´½¨²¢Íê³É³õʼ»¯ºóµÄ״̬¡£µ÷ÓÃCreateThread»áʹϵͳ²úÉúÒ»¸öÏß³ÌÄں˶ÔÏ󣬯äÒýÓüÆÊý£¨Usage count£©±»³õʼ»¯Îª2£¨´´½¨Ï̵߳Ľø³ÌºÍÏ̱߳¾Éí¶¼ÒýÓÃÁ˸ÃÄں˶ÔÏ󣩣¬ÆäËüÊôÐÔÒ²Íê³ÉÁ˳õʼ»¯£ºÔÝÍ£±êÖã¨Suspend count£©±»ÉèÖÃΪ1£¬Ïß³ÌÍ˳öÂ루Exit code£©±»ÉèÖÃΪSTILL_ACTIVE£¬Äں˶ÔÏó״̬±»ÖÃΪnonsignaled£¨Signaled£©¡£
Äں˶ÔÏó´´½¨Íê³Éºó£¬ÏµÍ³ÔÚµ±Ç°½ø³ÌÖÐΪÐÂÏ̵߳ÄÏß³ÌÕ»·ÖÅäÄڴ棬²¢ÔÚÏß³ÌÕ»µÄ¸ßλдÈëÁ½¸öÖµ¡£µÚ1¸öÖ¸ÊÇCreateThreadº¯ÊýµÄpvParam²ÎÊý£¬È»ºóÊÇpfnStartAddr²ÎÊý¡£
ÿ¸öÏß³ÌÓÐ×Ô¼ºµÄCPU¼Ä´æÆ÷×飬±»³ÆÎªÏß³ÌÉÏÏÂÎÄ£¨Context£©£¬Ï̵߳ÄÉÏÏÂÎÄ·´Ó³ÁËÏß³Ì×îºóÒ»´ÎÖ´ÐÐʱÆäCPU¼Ä´æÆ÷µÄ״̬¡£WinNT.hÖж¨ÒåÁËCONTEXT½á¹¹¶ÔÓ¦Ï̵߳ÄCPU¼Ä´æÆ÷×飬Ï̵߳ÄCONTEXTʵÀý±£´æÔÚÆäÄں˶ÔÏóÖС£
Ïß³ÌÉÏÏÂÎÄÖÐ×îÖØÒªµÄÁ½¸ö¼Ä´æÆ÷ÊÇÖ¸ÁîÖ¸Õë¼Ä´æÆ÷£¨Instruction pointer£©ºÍÕ»Ö¸Õë¼Ä´æÆ÷£¨Stack pointer£©¡£ÓÉÓÚÏß³ÌÊÇÔËÐÐÔÚ½ø³ÌµØÖ·¿Õ¼äÄڵģ¬Òò´ËÆäÕ»ÖеĵØÖ·¾ÍÊǽø³ÌµØÖ·¿Õ¼äÖеĵØÖ·¡£Ïß³ÌÄں˶ÔÏó³õʼ»¯Ê±£¬ÆäCONTEXT½á¹¹ÖеÄÕ»Ö¸Õë¼Ä´æÆ÷ÄÚÈݱ»ÉèÖÃΪpfnStartAddrÔÚÏß³ÌÕ»ÖеĵØÖ·£¬Ö¸ÁîÖ¸Õë¼Ä´æÆ÷ÄÚÈݱ»ÉèÖÃΪÃûΪRtlUserThreadStartµÄº¯ÊýµÄµØÖ·£¬¸Ãº¯ÊýÔÚNTDLL.dllÖж¨Ò壬»ù±¾¿ò¼ÜÈçÏÂËùʾ£º
VOID RtlUserThreadStart(PTHREAD_START_ROUTINE pfnStartAddr, PVOID pvParam) {
__try {
ExitThread((pfnStartAddr)(pvParam));
}
__except(UnhandledExceptionFilter(GetExceptionInformation())) {
ExitProcess(GetExceptionCode());
}
// NOTE: We never get here.
}
Ï̳߳õʼ»¯Íê³Éºó£¬ÏµÍ³»á¼ì²éCreateThreadÊÇ·ñ´«µÝÁËCREATE_SUSPENDED²ÎÊý£¬Èç¹ûûÓеϰ£¬ÏµÍ³»á°ÑÏß³ÌÄں˶ÔÏóµÄÔÝÍ£¼ÆÊýÉèÖÃΪ0²¢ÂíÉϵ÷¶ÈỊ̈߳¬È»ºó½«Ïß³ÌÉÏÏÂÎÄÖеÄÖµ¼ÓÔØµ½CPUµÄ¼Ä´æÆ÷×éÖУ¬ÓÉÓÚÏß³ÌÖ¸ÁîÖ¸Õë¼Ä´æÆ÷Ö¸ÏòRtlUserThreadStart£¬Òò´ËÏ߳̽«ÒÔRtlUserThreadStart¿ªÊ¼Ö´ÐУ¬RtlUserThreadStartÓÖµ÷ÓÃÁËCreateThreadΪÏß³ÌÉèÖõÄÈë¿Úµãº¯ÊýpfnStartAddr£¬²¢ÔÚpfnStartAddr·µ»ØÊ±µ÷ÓÃExitThreadÍ˳öÏ̡߳£Òª×¢Òâ¼ÙÈçÔÚpfnStartAddrÖ´ÐÐʱ·¢ÉúÁËδ´¦ÀíµÄÒì³££¬RtlUserThreadStartÖеĽṹ»¯Òì³£´¦Àí¿ò¼Ü½«Ö´ÐÐExitProcess£¬µ¼ÖÂÕû¸ö½ø³ÌµÄÍ˳ö¡£
Ïà¹ØÎĵµ£º
ÕâÆªÎÄÕÂÊÇʹÓÃSQLite C/C++½Ó¿ÚµÄÒ»¸ö¸ÅÒª½éÉܺÍÈëÃÅÖ¸ÄÏ¡£
ÓÉÓÚÔçÆÚµÄSQLiteÖ»Ö§³Ö5¸öC/C++½Ó¿Ú£¬Òò¶ø·Ç³£ÈÝÒ×ѧϰºÍʹÓ㬵«ÊÇËæ×ÅSQLite¹¦ÄܵÄÔöÇ¿£¬ÐµÄC/C++½Ó¿Ú²»¶ÏµÄÔö¼Ó½øÀ´£¬µ½ÏÖÔÚÓг¬¹ý150¸ö²»Í¬µÄAPI½Ó¿Ú¡£ÕâÍùÍùʹ³õѧÕßÍû¶øÈ´²½¡£ÐÒÔ˵ÄÊÇ£¬´ó¶àÊýSQLiteÖеÄC/C++½Ó¿ÚÊÇרÓõģ¬Òò¶øºÜÉÙ±»Ê¹Óõ½¡£¾¡¹ÜÓÐÕâ ......
Delphi Óë C/C++ Êý¾ÝÀàÐͶÔÕÕ±í
DelphiÊý¾ÝÀàÐÍC/C++
ShorInt
8λÓзûºÅÕûÊý
char
Byte
8λÎÞ·ûºÅÕûÊý
BYTE,unsigned short
SmallInt
16λÓзûºÅÕûÊý
short
Word
16λÎÞ·ûºÅÕûÊý
unsigned short
Integer,LongInt
32λÓзûºÅÕûÊý
int,long
Cardinal,LongWord/DWORD
32λÎÞ·ûºÅÕûÊý
unsigned long
Int6 ......
´úÂ룺
#include <iostream>
using namespace std;
class Clock
{
int hour, minute, second;
public:
Clock(int h, int m, int s) //¹¹Ô캯Êý¶¨Òå £¬ÎÞ·µ»ØÖµÀàÐÍ
{
if(s<0) second=0;
if (s& ......
constÊÇÒ»¸öCÓïÑԵĹؼü×Ö£¬ËüÏÞ¶¨Ò»¸ö±äÁ¿²»ÔÊÐí±»¸Ä±ä¡£Ê¹ÓÃconstÔÚÒ»¶¨³Ì¶ÈÉÏ¿ÉÒÔÌá¸ß³ÌÐòµÄ½¡×³ÐÔ£¬ÁíÍ⣬ÔÚ¹Û¿´±ðÈË´úÂëµÄʱºò£¬ÇåÎúÀí½âconstËùÆðµÄ×÷Ó㬶ÔÀí½â¶Ô·½µÄ³ÌÐòÒ²ÓÐһЩ°ïÖú¡£
¡¡¡¡ËäÈ»ÕâÌýÆðÀ´ºÜ¼òµ¥£¬µ«Êµ¼ÊÉÏ£¬constµÄʹÓÃÒ²ÊÇcÓïÑÔÖÐÒ»¸ö±È½Ï΢ÃîµÄµØ·½£¬Î¢ÃîÔںδ¦ÄØ£¿Çë¿´ÏÂÃæ¼¸¸öÎÊÌâ¡£
¡¡¡¡ÎÊÌâ ......
ÀîÈôÀÏÊ¦Ôø¾Ëµ£ºÊÀ½çÉϵijÌÐòÔ±·ÖÈýÖÖ£¬Ò»ÖÖÊÇÓÃEmacs£¬Ò»ÖÖÊÇÓÃVimµÄ£¬ÆäËüµÄ¹éΪµÚÈýÖÖ¡£ÆäÒâÊÇ˵Èç¹ûÒ»¸ö³ÌÐòÔ±Á½Õß¶¼²»Óõϰ£¬ÄÇ´óµÖÊDz»ÄÜ
¹éΪÈëÁ÷ÕßÐÐÁеġ£¶ÔʹÓÃC/C++µÄÈËÀ´Ëµ£¬ºÜ¶àÈËϲ»¶Emacs£¬¾Ý˵Óë¶ÔStallmanµÄ³ç°ÝÓë°®Îݼ°ÎÚÓйØ;-)¡¡µ±È»£¬EmacsÓëVimËä
È»ÔÚÎı¾±à¼·½ÃæµÄÐÔÄÜÊǵȼ۵쬵«Ê¹ÓÃÆðÀ´Á½Õ ......