def login():
print 'login'
def logout():
print 'logout'
controllers = {
'in': login, ##£¨ÀàËÆcÖеģºÊ¹Óú¯ÊýÈë¿ÚµØÖ·×÷Ϊ×ÖµäµÄÖµ£©
'out':logout,
}
def dispatcher(url, controllers):
func = controllers.get(url, None) ##£¨ÀàËÆcÖеģº½«º¯ÊýÈë¿ÚÖ¸Õ븳¸øfunc£©
if func:
func() ##£¨ ......
def login():
print 'login'
def logout():
print 'logout'
controllers = {
'in': login, ##£¨ÀàËÆcÖеģºÊ¹Óú¯ÊýÈë¿ÚµØÖ·×÷Ϊ×ÖµäµÄÖµ£©
'out':logout,
}
def dispatcher(url, controllers):
func = controllers.get(url, None) ##£¨ÀàËÆcÖеģº½«º¯ÊýÈë¿ÚÖ¸Õ븳¸øfunc£©
if func:
func() ##£¨ ......
Ò»¡¢Ê²Ã´ÊÇB/S½á¹¹ºÍC/S½á¹¹¡£
µÚÒ»¡¢Ê²Ã´ÊÇC/S½á¹¹¡£
C/S £¨Client/Server£©½á¹¹£¬¼´´ó¼ÒÊìÖªµÄ¿Í»§»úºÍ·þÎñÆ÷½á¹¹¡£ËüÊÇÈí¼þϵͳÌåϵ½á¹¹£¬Í¨¹ýËü¿ÉÒÔ³ä·ÖÀûÓÃÁ½¶ËÓ²¼þ»·¾³µÄÓÅÊÆ£¬½«ÈÎÎñºÏÀí·ÖÅäµ½Client¶ËºÍServer¶ËÀ´ÊµÏÖ£¬½µµÍÁËϵͳµÄͨѶ¿ªÏú¡£Ä¿Ç°´ó¶àÊýÓ¦ÓÃÈí¼þϵͳ¶¼ÊÇClient/ServerÐÎʽµÄÁ½²ã½á¹¹£¬ÓÉÓÚÏÖÔÚµÄÈí¼þÓ¦ÓÃϵͳÕýÔÚÏò·Ö²¼Ê½µÄWebÓ¦Ó÷¢Õ¹£¬WebºÍClient/Server Ó¦Óö¼¿ÉÒÔ½øÐÐͬÑùµÄÒµÎñ´¦Àí£¬Ó¦Óò»Í¬µÄÄ£¿é¹²ÏíÂß¼×é¼þ£»Òò´Ë£¬ÄÚ²¿µÄºÍÍⲿµÄÓû§¶¼¿ÉÒÔ·ÃÎÊеĺÍÏÖÓеÄÓ¦ÓÃϵͳ£¬Í¨¹ýÏÖÓÐÓ¦ÓÃϵͳÖеÄÂß¼¿ÉÒÔÀ©Õ¹³öеÄÓ¦ÓÃϵͳ¡£ÕâÒ²¾ÍÊÇĿǰӦÓÃϵͳµÄ·¢Õ¹·½Ïò¡£´«Í³µÄC£¯SÌåϵ½á¹¹ËäÈ»²ÉÓõÄÊÇ¿ª·Åģʽ£¬µ«ÕâÖ»ÊÇϵͳ¿ª·¢Ò»¼¶µÄ¿ª·ÅÐÔ£¬ÔÚÌØ¶¨µÄÓ¦ÓÃÖÐÎÞÂÛÊÇClient¶Ë»¹ÊÇServer¶Ë¶¼»¹ÐèÒªÌØ¶¨µÄÈí¼þÖ§³Ö¡£ÓÉÓÚûÄÜÌṩÓû§ÕæÕýÆÚÍûµÄ¿ª·Å»·¾³£¬C/S½á¹¹µÄÈí¼þÐèÒªÕë¶Ô²»Í¬µÄ²Ù×÷ϵͳϵͳ¿ª·¢²»Í¬°æ±¾µÄÈí¼þ£¬ ¼ÓÖ®²úÆ·µÄ¸üл»´úÊ®·Ö¿ì£¬ÒѾºÜÄÑÊÊÓ¦°Ų̀µçÄÔÒÔÉϾÖÓòÍøÓû§Í¬Ê±Ê¹Ó᣶øÇÒ´ú¼Û¸ß£¬ ЧÂʵ͡£
µÚ¶þ¡¢Ê²Ã´ÊÇB/S½á¹¹¡£
&n ......
Visual Studio°üº¬ÁË4¸ö±¾»úC/C++ÔËÐÐʱ¿âºÍ2¸öÓÃÀ´¹ÜÀíMS.NETµÄC/C++ÔËÐÐʱ¿â¡£ËùÓÐÕâЩ¿â¶¼Ö§³Ö¶àÏ̱߳à³Ì»·¾³£ºÄ¿Ç°ÒѾûÓÐרÃÅΪµ¥Ï߳̿ª·¢Éè¼ÆµÄC/C++ÔËÐÐʱ¿âÁË¡£±í6-1¶ÔÕâЩ¿â½øÐÐÁËÃèÊö£º
Libray Name
Description
LibCMt.lib
Statically linked release version of the library.
LibCMtD.lib
Statically linked debug version of the library.
MSVCRt.lib
Import library for dynamically linking the release version of the MSVCR80.dll library. (This is the default library when you create a new project.)
MSVCRtD.lib
Import library for dynamically linking the debug version of the MSVCR80D.dll library.
MSVCMRt.lib
Import library used for mixed managed/native code.
MSVCURt.lib
Import library compiled as 100-percent pure MSIL code.
µ±Ð½¨Ò»¸öÏîĿʱ£¬ÄãÓ¦¸ÃÖªµÀµ±Ç°ÏîÄ¿Á´½ÓµÄÊÇÄÄÒ»¸ö¿â¡£ÔÚVisual Studio»·¾³Ï£¬¿ÉÒÔͨ¹ý“ÏîÄ¿ÊôÐÔ”——“ÅäÖÃÊôÐÔ”——“C/C++”——“´úÂëÉú³É”——“ÔËÐÐʱ¿â&rdqu ......
Visual Studio°üº¬ÁË4¸ö±¾»úC/C++ÔËÐÐʱ¿âºÍ2¸öÓÃÀ´¹ÜÀíMS.NETµÄC/C++ÔËÐÐʱ¿â¡£ËùÓÐÕâЩ¿â¶¼Ö§³Ö¶àÏ̱߳à³Ì»·¾³£ºÄ¿Ç°ÒѾûÓÐרÃÅΪµ¥Ï߳̿ª·¢Éè¼ÆµÄC/C++ÔËÐÐʱ¿âÁË¡£±í6-1¶ÔÕâЩ¿â½øÐÐÁËÃèÊö£º
Libray Name
Description
LibCMt.lib
Statically linked release version of the library.
LibCMtD.lib
Statically linked debug version of the library.
MSVCRt.lib
Import library for dynamically linking the release version of the MSVCR80.dll library. (This is the default library when you create a new project.)
MSVCRtD.lib
Import library for dynamically linking the debug version of the MSVCR80D.dll library.
MSVCMRt.lib
Import library used for mixed managed/native code.
MSVCURt.lib
Import library compiled as 100-percent pure MSIL code.
µ±Ð½¨Ò»¸öÏîĿʱ£¬ÄãÓ¦¸ÃÖªµÀµ±Ç°ÏîÄ¿Á´½ÓµÄÊÇÄÄÒ»¸ö¿â¡£ÔÚVisual Studio»·¾³Ï£¬¿ÉÒÔͨ¹ý“ÏîÄ¿ÊôÐÔ”——“ÅäÖÃÊôÐÔ”——“C/C++”——“´úÂëÉú³É”——“ÔËÐÐʱ¿â&rdqu ......
ÏÂÃæÁоÙÁËһЩ³£¼ûµÄ±àÒëÆ÷µÄµ÷ÓÃÔ¼¶¨
VC6:
µ÷ÓÃÔ¼¶¨ ¶ÑÕ»Çå³ý ²ÎÊý´«µÝ
__cdecl µ÷ÓÃÕß ´ÓÓÒµ½×ó,ͨ¹ý¶ÑÕ»´«µÝ
__stdcall º¯ÊýÌå ´ÓÓÒµ½×ó,ͨ¹ý¶ÑÕ»´«µÝ
__fastcall º¯ÊýÌå ´ÓÓÒµ½×ó,ÓÅÏÈʹÓüĴæÆ÷(ECX,EDX),È»ºóʹÓöÑÕ»
thiscall º¯ÊýÌå thisÖ¸ÕëĬÈÏͨ¹ýECX´«µÝ,ÆäËû²ÎÊý´ÓÓÒµ½×óÈëÕ»
__cdeclÊÇC£ÜC++µÄĬÈϵ÷ÓÃÔ¼¶¨; VCµÄµ÷ÓÃÔ¼¶¨Öв¢Ã»ÓÐthiscallÕâ¸ö¹Ø¼ü×Ö,ËûÊÇÀà³ÉÔ±º¯ÊýĬÈϵ÷ÓÃÔ¼¶¨;
C£ÜC++ÖеÄmain(»òwmain)º¯ÊýµÄµ÷ÓÃÔ¼¶¨±ØÐëÊÇ__cdecl,²»ÔÊÐí¸ü¸Ä;
ĬÈϵ÷ÓÃÔ¼¶¨Ò»°ãÄܹ»Í¨¹ý±àÒëÆ÷ÅäÖýøÐиü¸Ä,¼ÙÈçÄúµÄ´úÂëÒÀÀµÓÚµ÷ÓÃÔ¼¶¨,ÇëÃ÷È·Ö¸³öÐèҪʹÓõĵ÷ÓÃÔ¼¶¨;
C++Builder6:
µ÷ÓÃÔ¼¶¨ ¶ÑÕ»Çå³ý ²ÎÊý´«µÝ
__fa ......
ÏÂÃæÁоÙÁËһЩ³£¼ûµÄ±àÒëÆ÷µÄµ÷ÓÃÔ¼¶¨
VC6:
µ÷ÓÃÔ¼¶¨ ¶ÑÕ»Çå³ý ²ÎÊý´«µÝ
__cdecl µ÷ÓÃÕß ´ÓÓÒµ½×ó,ͨ¹ý¶ÑÕ»´«µÝ
__stdcall º¯ÊýÌå ´ÓÓÒµ½×ó,ͨ¹ý¶ÑÕ»´«µÝ
__fastcall º¯ÊýÌå ´ÓÓÒµ½×ó,ÓÅÏÈʹÓüĴæÆ÷(ECX,EDX),È»ºóʹÓöÑÕ»
thiscall º¯ÊýÌå thisÖ¸ÕëĬÈÏͨ¹ýECX´«µÝ,ÆäËû²ÎÊý´ÓÓÒµ½×óÈëÕ»
__cdeclÊÇC£ÜC++µÄĬÈϵ÷ÓÃÔ¼¶¨; VCµÄµ÷ÓÃÔ¼¶¨Öв¢Ã»ÓÐthiscallÕâ¸ö¹Ø¼ü×Ö,ËûÊÇÀà³ÉÔ±º¯ÊýĬÈϵ÷ÓÃÔ¼¶¨;
C£ÜC++ÖеÄmain(»òwmain)º¯ÊýµÄµ÷ÓÃÔ¼¶¨±ØÐëÊÇ__cdecl,²»ÔÊÐí¸ü¸Ä;
ĬÈϵ÷ÓÃÔ¼¶¨Ò»°ãÄܹ»Í¨¹ý±àÒëÆ÷ÅäÖýøÐиü¸Ä,¼ÙÈçÄúµÄ´úÂëÒÀÀµÓÚµ÷ÓÃÔ¼¶¨,ÇëÃ÷È·Ö¸³öÐèҪʹÓõĵ÷ÓÃÔ¼¶¨;
C++Builder6:
µ÷ÓÃÔ¼¶¨ ¶ÑÕ»Çå³ý ²ÎÊý´«µÝ
__fa ......
¡¡2.ÕÒ´íÌâ
¡¡¡¡ÊÔÌâ1£º
void test1()
{
¡¡char string[10];
¡¡char* str1 = "0123456789";
¡¡strcpy( string, str1 );
}
¡¡¡¡ÊÔÌâ2£º
void test2()
{
¡¡char string[10], str1[10];
¡¡int i;
¡¡for(i=0; i<10; i++)
¡¡{
¡¡¡¡str1[i] = 'a';
¡¡}
¡¡strcpy( string, str1 );
}
¡¡¡¡ÊÔÌâ3£º
void test3(char* str1)
{
¡¡char string[10];
¡¡if( strlen( str1 ) <= 10 )
¡¡{
¡¡¡¡strcpy( string, str1 );
¡¡}
}
¡¡¡¡½â´ð£º
¡¡¡¡ÊÔÌâ1×Ö·û´®str1ÐèÒª11¸ö×Ö½Ú²ÅÄÜ´æ·ÅÏ£¨°üÀ¨Ä©Î²µÄ’\0’£©£¬¶østringÖ»ÓÐ10¸ö×ֽڵĿռ䣬strcpy»áµ¼ÖÂÊý×éÔ½½ç£»
¡¡¡¡¶ÔÊÔÌâ2£¬Èç¹ûÃæÊÔÕßÖ¸³ö×Ö·ûÊý×éstr1²»ÄÜÔÚÊý×éÄÚ½áÊø¿ÉÒÔ¸ø3·Ö£»Èç¹ûÃæÊÔÕßÖ¸³östrcpy(string, str1)µ÷ÓÃʹµÃ´Óstr1ÄÚ´æÆð¸´ÖƵ½stringÄÚ´æÆðËù¸´ÖƵÄ×Ö½ÚÊý¾ßÓв»È·¶¨ÐÔ¿ÉÒÔ¸ø7·Ö£¬ÔÚ´Ë»ù´¡ÉÏÖ¸³ö¿âº¯Êýstrcpy¹¤×÷·½Ê½µÄ¸ø10·Ö£»
¡¡¡¡¶ÔÊÔÌâ3£¬if(strlen(str1) <= 10)Ó¦¸ÄΪif(strlen(str1) < 10)£¬ÒòΪstrlenµÄ½á¹ûδͳ¼Æ’\0’ËùÕ¼ÓõÄ1¸ö×Ö½Ú¡£
¡¡¡¡ÆÊÎö£º
¡¡¡¡¿¼²é¶Ô»ù±¾¹¦µÄÕÆÎÕ£º
¡¡¡¡(1)×Ö·û´®ÒÔ’\0’½áβ£»
¡¡¡¡(2)¶ÔÊý×éÔ½½ç°ÑÎÕµ ......
¡¡2.ÕÒ´íÌâ
¡¡¡¡ÊÔÌâ1£º
void test1()
{
¡¡char string[10];
¡¡char* str1 = "0123456789";
¡¡strcpy( string, str1 );
}
¡¡¡¡ÊÔÌâ2£º
void test2()
{
¡¡char string[10], str1[10];
¡¡int i;
¡¡for(i=0; i<10; i++)
¡¡{
¡¡¡¡str1[i] = 'a';
¡¡}
¡¡strcpy( string, str1 );
}
¡¡¡¡ÊÔÌâ3£º
void test3(char* str1)
{
¡¡char string[10];
¡¡if( strlen( str1 ) <= 10 )
¡¡{
¡¡¡¡strcpy( string, str1 );
¡¡}
}
¡¡¡¡½â´ð£º
¡¡¡¡ÊÔÌâ1×Ö·û´®str1ÐèÒª11¸ö×Ö½Ú²ÅÄÜ´æ·ÅÏ£¨°üÀ¨Ä©Î²µÄ’\0’£©£¬¶østringÖ»ÓÐ10¸ö×ֽڵĿռ䣬strcpy»áµ¼ÖÂÊý×éÔ½½ç£»
¡¡¡¡¶ÔÊÔÌâ2£¬Èç¹ûÃæÊÔÕßÖ¸³ö×Ö·ûÊý×éstr1²»ÄÜÔÚÊý×éÄÚ½áÊø¿ÉÒÔ¸ø3·Ö£»Èç¹ûÃæÊÔÕßÖ¸³östrcpy(string, str1)µ÷ÓÃʹµÃ´Óstr1ÄÚ´æÆð¸´ÖƵ½stringÄÚ´æÆðËù¸´ÖƵÄ×Ö½ÚÊý¾ßÓв»È·¶¨ÐÔ¿ÉÒÔ¸ø7·Ö£¬ÔÚ´Ë»ù´¡ÉÏÖ¸³ö¿âº¯Êýstrcpy¹¤×÷·½Ê½µÄ¸ø10·Ö£»
¡¡¡¡¶ÔÊÔÌâ3£¬if(strlen(str1) <= 10)Ó¦¸ÄΪif(strlen(str1) < 10)£¬ÒòΪstrlenµÄ½á¹ûδͳ¼Æ’\0’ËùÕ¼ÓõÄ1¸ö×Ö½Ú¡£
¡¡¡¡ÆÊÎö£º
¡¡¡¡¿¼²é¶Ô»ù±¾¹¦µÄÕÆÎÕ£º
¡¡¡¡(1)×Ö·û´®ÒÔ’\0’½áβ£»
¡¡¡¡(2)¶ÔÊý×éÔ½½ç°ÑÎÕµ ......
¹ú¼Ò¡¢ÎÄ»¯ºÍÓïÑÔ¹æÔò¼¯³ÆÎªÇøÓòÉèÖã¬locale.hÍ·ÎļþÖж¨ÒåÁËÇøÓòÉèÖÃÏà¹ØµÄº¯Êý¡£setlocaleº¯ÊýÓÃÓÚÉèÖûò·µ»Øµ±Ç°µÄÇøÓòÌØÐÔ£¬localeconvÓÃÓÚ·µ»Øµ±Ç°ÇøÓòÖеÄÊý×ֺͻõ±ÒÐÅÏ¢£¨±£´æÔÚstruct lconv½á¹¹ÊµÀýÖУ©¡£setlocaleµÄµÚÒ»¸öʵ²ÎÖ¸¶¨Òª¸Ä±äµÄÇøÓòÐÐΪÀà±ð£¬Ô¤¶¨ÒåµÄsetlocaleÀà±ðÓУº
LC_ALL£ºËùÓÐÐÐΪ¡£
LC_COLLATE£ºstrcollºÍstrxfrmº¯ÊýµÄÐÐΪ¡£
LC_CTYPE£ºctype.hÖеÄ×Ö·û´®´¦Àíº¯ÊýÐÐΪ¡£
LC_MONETARY£ºlocaleconv·µ»ØµÄ±ÒÖµÐÅÏ¢¡£
LC_NUMERIC£ºlocaleconv·µ»ØµÄСÊýµãºÍ·Ç±ÒÖµÐÅÏ¢¡£
LC_TIME£ºstrftimeº¯ÊýµÄÐÐΪ¡£
locale.hÖÐÄÚÈÝÈçÏ£º
/* ISO C99 Standard: 7.11 ±¾µØ»¯ <locale.h> */
#ifndef _LOCALE_H
#define _LOCALE_H 1
#include <features.h>
#define __need_NULL
#include <stddef.h>
#include <bits/locale.h>
__BEGIN_DECLS
/* ÏÂÃæÊÇsetlocaleµÚÒ»¸öʵ²Î¿ÉÄܵÄÖµ¡£´úÂë¼ÙÉèLC_*ºêµÄ×îСֵΪ0 */
#define LC_CTYPE __LC_CTYPE
# ......