Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

½«Win32 C/C++Ó¦ÓóÌÐòÇ¨ÒÆµ½Linux

±¾ÎĵÄÄÚÈÝÊÇ Win32 API£¨ÌرðÊǽø³Ì¡¢Ï̺߳͹²ÏíÄÚ´æ·þÎñ£©µ½ POWER ÉÏ Linux µÄÓ³Éä¡£±¾ÎÄ¿ÉÒÔ°ïÖúÄúÈ·¶¨ÄÄÖÖÓ³Éä·þÎñ×îÊʺÏÄúµÄÐèÒª¡£×÷ÕßÏòÄúÏêϸ½éÉÜÁËËûÔÚÒÆÖ² Win32 C/C++ Ó¦ÓóÌÐòʱÓöµ½µÄ API Ó³Éä¡£
¸ÅÊö
Óкܶ෽ʽ¿ÉÒÔ½« Win32 C/C++ Ó¦ÓóÌÐòÒÆÖ²ºÍÇ¨ÒÆµ½ pSeries ƽ̨¡£Äú¿ÉÒÔʹÓÃÃâ·ÑÈí¼þ»òÕßµÚÈý·½¹¤¾ßÀ´½« Win32 Ó¦ÓóÌÐò´úÂëÒÆµ½ Linux¡£ÔÚÎÒÃǵķ½°¸ÖУ¬ÎÒÃǾö¶¨Ê¹ÓÃÒ»¸ö¿ÉÒÆÖ²²ãÀ´³éÏóϵͳ API µ÷Ó᣿ÉÒÆÖ²²ã½«Ê¹ÎÒÃǵÄÓ¦ÓóÌÐò¾ßÓÐÒÔÏÂÓÅÊÆ£º
ÓëÓ²¼þÎ޹ء£
Óë²Ù×÷ϵͳÎ޹ء£
Óë²Ù×÷ϵͳÉϰ汾Óë°æ±¾¼äµÄ±ä»¯Î޹ء£
Óë²Ù×÷ϵͳ API ·ç¸ñ¼°´íÎó´úÂëÎ޹ء£
Äܹ»Í³Ò»µØÔÚ¶Ô OS µÄµ÷ÓÃÖÐÖÃÈëÐÔÄÜºÍ RAS ¹³×Ó£¨hook£©¡£
ÓÉÓÚ Windows »·¾³Óë pSeries Linux »·¾³ÓкܴóÇø±ð£¬ËùÒÔ½øÐпç UNIX ƽ̨µÄÒÆÖ²±È½øÐÐ´Ó Win32 ƽ̨µ½ UNIX ƽ̨µÄÒÆÖ²ÒªÈÝÒ׵öࡣÕâÊÇ¿ÉÒÔÏëµ½µÄ£¬ÒòΪºÜ¶à UNIX ϵͳ¶¼Ê¹Óù²Í¬µÄÉè¼ÆÀíÄÔÚÓ¦ÓóÌÐò²ãÓзdz£¶àµÄÀàËÆÖ®´¦¡£²»¹ý£¬Win32 API ÔÚÒÆÖ²µ½ Linux ʱÊÇÊÜÏ޵ġ£±¾ÎÄÆÊÎöÁËÓÉÓÚ Linux ºÍ Win32 Ö®¼äÉè¼ÆµÄ²»Í¬¶øÒý·¢µÄÎÊÌâ¡£
³õʼ»¯ºÍÖÕÖ¹
ÔÚ Win2K/NT ÉÏ£¬DLL µÄ³õʼ»¯ºÍÖÕÖ¹Èë¿ÚµãÊÇ _DLL_InitTerm º¯Êý¡£µ±Ã¿¸öеĽø³Ì»ñµÃ¶Ô DLL µÄ·ÃÎÊʱ£¬Õâ¸öº¯Êý³õʼ»¯ DLL Ëù±ØÐèµÄ»·¾³¡£µ±Ã¿¸öеĽø³ÌÊÍ·ÅÆä¶Ô DLL µÄ·ÃÎÊʱ£¬Õâ¸öº¯ÊýΪÄǸö»·¾³ÖÕÖ¹ DLL¡£µ±ÄúÁ´½Óµ½ÄǸö DLL ʱ£¬Õâ¸öº¯Êý»á×Ô¶¯µØ±»µ÷Ó᣶ÔÓ¦ÓóÌÐò¶øÑÔ£¬_DLL_InitTerm º¯ÊýÖаüº¬ÁËÁíÍâÒ»¸ö³õʼ»¯ºÍÖÕÖ¹Àý³Ì¡£
ÔÚ Linux ÉÏ£¬GCC ÓÐÒ»¸öÀ©Õ¹£¬ÔÊÐíÖ¸¶¨µ±¿ÉÖ´ÐÐÎļþ»òÕß°üº¬ËüµÄ¹²Ïí¶ÔÏóÆô¶¯»òֹͣʱӦ¸Ãµ÷ÓÃij¸öº¯Êý¡£Óï·¨ÊÇ __attribute__((constructor)) »ò __attribute__((destructor))¡£ÕâЩ»ù±¾ÉÏÓë¹¹Ô캯Êý¼°Îö¹¹º¯ÊýÏàͬ£¬¿ÉÒÔÌæ´ú glibc ¿âÖÐµÄ _init ºÍ _fini º¯Êý¡£
ÕâЩº¯ÊýµÄ C Ô­ÐÍÊÇ£º
void __attribute__ ((constructor)) app_init(void);
void __attribute__ ((destructor)) app_fini(void);
Win32 sample
_DLL_InitTerm(HMODULE modhandle, DWORD fdwReason, LPVOID lpvReserved)
{
WSADATA Data;
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
if (_CRT_init() == -1)
return 0L;
/* start with initialization code */


Ïà¹ØÎĵµ£º

C¿âº¯Êý×Ö·û´®´¦Àíº¯ÊýµÄCʵÏÖ(³£¼û)

1.strlen()
ʵÏÖ£º
    size_t  strlen(const char *s)
    {
       size_t n;
       for(n = 0; *s != '\0'; s++)
          ++n;
       return n;
  ......

¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼Ü——ϵÁÐ

ÕâһϵÁÐÎÄÕÂÊÇÎÒ¹¹½¨C/C++²å¼þ¿ª·¢¿ò¼Ü¿ª·Å¿ò¼ÜµÄ¹ý³Ì¡£ºóÃæ»áÒ»Ö±¸üУ¬Ö±ÖÁ¹¹½¨Íê³É¡£
¡¶¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼Ü£¨Ò»£©——³õ²½ÉèÏë¡·
¡¶¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼Ü£¨¶þ£©——×ÜÌ幦ÄÜ¡·
¡¶
¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼Ü£¨Èý£©——×ÜÌå½á¹¹
¡·
¡¶¹¹½¨×Ô¼ºµÄC/C++²å¼þ¿ª·¢¿ò¼ ......

cºê¶¨ÒåµÄ¼¼ÇÉ×ܽá


1,·ÀÖ¹Ò»¸öÍ·Îļþ±»Öظ´°üº¬
#ifndef COMDEF_H
#define COMDEF_H
//Í·ÎļþÄÚÈÝ
#endif
2,ÖØÐ¶¨ÒåһЩÀàÐÍ,·ÀÖ¹ÓÉÓÚ¸÷ÖÖÆ½Ì¨ºÍ±àÒëÆ÷µÄ²»Í¬,¶ø²úÉúµÄÀàÐÍ×Ö½ÚÊý²îÒì,·½±ãÒÆÖ²¡£
typedef unsigned char      boolean;     /* Boolean value type. */
typedef ......

(ת)C³ÌÐòµÄ±àÒë¹ý³Ì

±àÒ룬±àÒë³ÌÐò¶ÁȡԴ³ÌÐò£¨×Ö·ûÁ÷£©£¬¶ÔÖ®½øÐдʷ¨ºÍÓï·¨µÄ·ÖÎö£¬½«¸ß¼¶ÓïÑÔÖ¸Áîת»»Îª¹¦ÄܵÈЧµÄ»ã±à´úÂ룬ÔÙÓÉ»ã±à³ÌÐòת»»Îª»úÆ÷ÓïÑÔ£¬²¢ÇÒ°´ÕÕ²Ù×÷ϵͳ¶Ô¿ÉÖ´ÐÐÎļþ¸ñʽµÄÒªÇóÁ´½ÓÉú³É¿ÉÖ´ÐгÌÐò¡£
CÔ´³ÌÐòÍ·Îļþ£­£­>Ô¤±àÒë´¦Àí(cpp)£­£­>±àÒë³ÌÐò±¾Éí£­£­>ÓÅ»¯³ÌÐò£­£­>»ã±à³ÌÐò£­£­>Á´½Ó³ÌÐò--> ......

ѸÀ×±ÊÊÔ ×Ö·û´®·´×ª C¿âº¯Êý strrev

char* my_strrev( char* string )
{
 char *left, *right, ch;
 left = right = string;
 while( *right++ != '\0');
 right -= 2;
 while( left<right )
 {
  ch = *left;
  *left = *right;
  *right = ch;
  ++left; --right;
&n ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ