¸ß¿É¿¿ÐÔC³ÌÐòµÄ¼¸µãÒªÇó
Ò»¡¢¿ÉÖØÈ뺯Êý
1£©Ê²Ã´ÊÇ¿ÉÖØÈëÐÔ£¿
¿ÉÖØÈ루reentrant£©º¯Êý¿ÉÒÔÓɶàÓÚÒ»¸öÈÎÎñ²¢·¢Ê¹Ó㬶ø²»±Øµ£ÐÄÊý¾Ý´íÎó¡£Ïà·´£¬ ²»¿ÉÖØÈ루non-reentrant£©º¯Êý²»ÄÜÓɳ¬¹ýÒ»¸öÈÎÎñËù¹²Ïí£¬³ý·ÇÄÜÈ·±£º¯ÊýµÄ»¥³â£¨»òÕßʹÓÃÐźÅÁ¿£¬»òÕßÔÚ´úÂëµÄ¹Ø¼ü²¿·Ö½ûÓÃÖжϣ©¡£¿ÉÖØÈ뺯Êý¿ÉÒÔÔÚÈÎÒâʱ¿Ì±»Öжϣ¬ÉÔºóÔÙ¼ÌÐøÔËÐУ¬²»»á¶ªÊ§Êý¾Ý¡£¿ÉÖØÈ뺯ÊýҪôʹÓñ¾µØ±äÁ¿£¬ÒªÃ´ÔÚʹÓÃÈ«¾Ö±äÁ¿Ê±±£»¤×Ô¼ºµÄÊý¾Ý¡£
2£©¿ÉÖØÈ뺯Êý£º
²»ÎªÁ¬ÐøµÄµ÷ÓóÖÓо²Ì¬Êý¾Ý¡£
²»·µ»ØÖ¸Ïò¾²Ì¬Êý¾ÝµÄÖ¸Õ룻ËùÓÐÊý¾Ý¶¼Óɺ¯ÊýµÄµ÷ÓÃÕßÌṩ¡£
ʹÓñ¾µØÊý¾Ý£¬»òÕßͨ¹ýÖÆ×÷È«¾ÖÊý¾ÝµÄ±¾µØ¿½±´À´±£»¤È«¾ÖÊý¾Ý¡£
Èç¹û±ØÐë·ÃÎÊÈ«¾Ö±äÁ¿£¬¼ÇסÀûÓû¥³âÐźÅÁ¿À´±£»¤È«¾Ö±äÁ¿¡£
¾ø²»µ÷ÓÃÈκβ»¿ÉÖØÈ뺯Êý¡£
3£©²»¿ÉÖØÈ뺯Êý£º
º¯ÊýÖÐʹÓÃÁ˾²Ì¬±äÁ¿£¬ÎÞÂÛÊÇÈ«¾Ö¾²Ì¬±äÁ¿»¹ÊǾֲ¿¾²Ì¬±äÁ¿¡£
º¯Êý·µ»Ø¾²Ì¬±äÁ¿¡£
º¯ÊýÖе÷ÓÃÁ˲»¿ÉÖØÈ뺯Êý¡£
º¯ÊýÌåÄÚʹÓÃÁ˾²Ì¬µÄÊý¾Ý½á¹¹£»
º¯ÊýÌåÄÚµ÷ÓÃÁËmalloc()»òÕßfree()º¯Êý£»
º¯ÊýÌåÄÚµ÷ÓÃÁËÆäËû±ê×¼I/Oº¯Êý¡£
º¯ÊýÊÇsingletonÖеijÉÔ±º¯Êý¶øÇÒʹÓÃÁ˲»Ê¹ÓÃÏ̶߳ÀÁ¢´æ´¢µÄ³ÉÔ±±äÁ¿ ¡£
×ܵÄÀ´Ëµ£¬Èç¹ûÒ»¸öº¯ÊýÔÚÖØÈëÌõ¼þÏÂʹÓÃÁËδÊܱ£»¤µÄ¹²ÏíµÄ×ÊÔ´£¬ÄÇôËüÊDz»¿ÉÖØÈëµÄ¡£
4£©Ê¾Àý
ÔÚ¶àÏß³ÌÌõ¼þÏ£¬º¯ÊýÓ¦µ±ÊÇḬ̈߳²È«µÄ£¬½øÒ»²½£¬¸üÇ¿µÄÌõ¼þÊÇ¿ÉÖØÈëµÄ¡£¿ÉÖØÈ뺯Êý±£Ö¤ÁËÔÚ¶àÏß³ÌÌõ¼þÏ£¬º¯ÊýµÄ״̬²»»á³öÏÖ´íÎó¡£ÒÔÏ·ֱðÊÇÒ»¸ö²»¿ÉÖØÈëºÍ¿ÉÖØÈ뺯ÊýµÄʾÀý£º
//c code
static int tmp;
void func1(int* x, int* y) {
tmp=*x;
*x=*y;
*y=tmp;
}
void func2(int* x, int* y) {
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}
func1ÊDz»¿ÉÖØÈëµÄ£¬func2ÊÇ¿ÉÖØÈëµÄ¡£ÒòΪÔÚ¶àÏß³ÌÌõ¼þÏ£¬²Ù×÷ϵͳ»áÔÚfunc1»¹Ã»ÓÐÖ´ÐÐÍêµÄÇé¿öÏ£¬Çл»µ½ÁíÒ»¸öÏß³ÌÖУ¬ÄǸöÏ߳̿ÉÄÜÔٴε÷ÓÃfunc1£¬ÕâÑù״̬¾Í´íÁË¡£
¶þ¡¢º¯Êý±àд¹æ·¶
1 £º¶ÔËùµ÷Óú¯ÊýµÄ´íÎó·µ»ØÂëÒª×Ðϸ¡¢È«ÃæµØ´¦Àí
2 £ºÃ÷È·º¯Êý¹¦ÄÜ£¬¾«È·£¨¶ø²»ÊǽüËÆ£©µØÊµÏÖº¯ÊýÉè¼Æ
3 £º±àд¿ÉÖØÈ뺯Êýʱ£¬Ó¦×¢Òâ¾Ö²¿±äÁ¿µÄʹÓã¨Èç±àдC/C++ ÓïÑԵĿÉÖØÈ뺯Êýʱ£¬Ó¦Ê¹ÓÃauto ¼´È±Ê¡Ì¬¾Ö²¿±äÁ¿»ò¼Ä´æÆ÷±äÁ¿£©
˵Ã÷£º±àдC/C++ÓïÑԵĿÉÖØÈ뺯Êýʱ£¬²»Ó¦Ê¹ÓÃstatic¾Ö²¿±äÁ¿£¬·ñÔò±ØÐë¾¹ýÌØÊâ´¦Àí£¬²ÅÄÜʹº¯Êý¾ßÓпÉÖØÈë
Ïà¹ØÎĵµ£º
Ò»¡¢
1¡¢¹ØÓÚ×Ö½Ú˳Ðò£º»°ËµÔÚÌØ¶¨µÄÓ²¼þƽ̨ÉÏ£¬¶à×Ö½ÚÊý¾ÝµÄ˳Ðò´æ·ÅÓÐÁ½ÖÖ·½Ê½£¨little-endian¡¢big-endian£©¡£Ç°ÕßµÄÊý¾ÝµÄµÍ×Ö½Ú
²¿·Ö´æ·ÅÔڵ͵ØÖ·Äڴ棬ºóÕßÇ¡ºÃÏà·´¡£PCÒ»°ãÊÇ»ùÓÚIA-32΢´¦ÀíÆ÷£¬ÊôÓÚlittle-endian¡£Ä³Ð©RISC¼Ü¹¹µÄCPU£¬ÀýÈçSPARC¡¢
POWERPCµÈ£¬ÔòÊ ......
C/C++ÖÐnearºÍfarµÄÇø±ð
¹Ø¼ü×ÖnearºÍfarÊÜÄ¿±ê¼ÆËã»úÌåϵ½á¹¹µÄÓ°Ï졣Ŀǰ±à³ÌÖÐʹÓò»¶à¡£
near¹Ø¼ü×Ö´´½¨Ò»¸öÖ¸Ïò¿ÉѰַÄÚ´æµÍ¶Ë²¿·ÖµÄÄ¿±êÖ¸Õë¡£ÕâЩָÕëÕ¼ÓÃÄÚ´æµÄµ¥Ò»×Ö½Ú£¬²¢ÇÒËûÃÇÄܹ»Ö¸ÏòµÄÄÚ´æµ¥Ôª±»ÏÞÖÆµ½256¸öλÖã¬Í¨³£ÊÇÔÚ0x0000~0x00ff·¶Î ......
#include <stdio.h>
#include <stdlib.h> //use malloc, free
#include <string.h> //use memset
#include <ctype.h> //use isdigit
#define ERROR_ILLEGAL_CHAR 1 //define error illegal character as 1
#define ERROR_NUMBERS_DIF 2 //define error numbers is not the same in diffe ......
/*
* ¸Ã¹¦ÄÜÖ÷ÒªÊÇÑÝʾ£¬Í¬Ê±Á¬½ÓÁ½¸ö²¢·¢µÄÊý¾Ý¿â
*/
/* °üº¬CÍ·Îļþ */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* °üº¬SQLCAÍ·Îļþ */
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE sqlda;
int main()
{
EXEC SQL BEGIN DE ......