Ö»ÊÇÓÐÈËÇ£Éæµ½Ð´³ÌÐòµÄ,ÎÒ¾Í˵˵.Å®Ö÷½ÇÈç¹û²»³öÀ´³ÎÇå¾ÍÒ»±²×Ó±»»ÙÁË.У·çÑϽ÷µÄÇ廪ҲÓÐÕâÖÖÀÄSµÄÐÐΪÓе㲻¿É˼Òâ.ÕÒ³ÌÐòԱд×÷ÒµÖ»ÊǸö·ÖÊֵĽè¿Ú°É.Å®Ö÷½Ç»¹Â÷ÇåÐãµÄ.³öÀ´ÌÖÕ®µÄ"Ô©´óÍ·"ÆäʵҲ²»ÀíÖÇ,»ÙÁËǰŮÓѵÄÐÒ¸£ºÜºÃÂð?
µ«Ô¸CÓïÑÔÃÅÖ»ÊǸöÓéÀÖʼþ,¸öÈ˾õµÃ¿ÉÐŶÈÓÐÏÞ,ÖÁÉÙ²»»áд×÷ÒµÓÖÕÒϸöÒ»ÄÐÈË.³ÌÐòԱҲţBÁËÒ»»Ø? ......
²Î¿¼ÍøÖ·£ºhttp://www.uclibc.org/
GNUµÄGlibcÊÇÒ»¸ö·Ç³£³è´ó¶øÍêÕûµÄ¿â£¬ÖÁÉÙ¶ÔÓÚǶÈëʽϵͳÀ´Ëµ£¬ÆäÌå»ýÏԵùýÓÚ´óÁËһЩ¡£uClibcµÄÌá³ö½ÏºÃµÄ½â¾öÁËÕâÑùÒ»¸öÎÊÌâ¡£uClibc¾¡¿ÉÄܵļæÈÝGlibc£¬´ó¶àÊýÓ¦ÓóÌÐò¿ÉÒÔÔÚºÜС»òÍêÈ«²»Ð޸ĵÄÇé¿öϾͿÉÄÜʹÓÃuClibcÌæ´úglibc¡£Í¨¹ýuClibcÀ´´úÌæGlibc£¬¿ÉÒÔÔÚ²»¸Ä±äÓ¦ÓóÌÐò¹¦ÄܵÄǰÌáÏ£¬´ó´ó¼õÉÙ·¢²¼ÎļþµÄ´óС£¬ÎÞÂÛÓ¦ÓóÌÐòÒÔ¾²Ì¬Á´½ÓÀ´±àÒ룬»¹ÊÇÒÔ¶¯Ì¬Á´½ÓÐÎʽ±àÒë¡£
²»¹ýʹÓÃuClibc´úÌæ²¢²»ÊǼòµ¥µÄÉèÖÃÒ»Á½¸ö²ÎÊý¾ÍÐÐÁË£¬Í¨³£ÐèҪʹÓÃÒ»¸ö²»Í¬µÄ¹¤¾ß¼¯£¨gcc/binutilsµÈ£©À´±àÒëÔ´´úÂë¡£ÊÖ¹¤µÄ¹¹ÔìÕâÑùÒ»¸ö»·¾³£¬¶ÔÓÚ´ó¶àÊýÆÕͨ³ÌÐòÔ±À´Ëµ£¬²»Ò»¶¨ÊÇÒ»¼þºÜ¼òµ¥µÄÊÂÇ飬Òò´Ë£¬uClibcµÄ¿ª·¢Õß´´Ôì³öÒ»¸ö½Ð×öbuildrootµÄ¹¤¾ß¼¯¡£buildroot½«×Ô¶¯¹¹Ôì±àÒë»ùÓÚuClibc´úÂëµÄ¹¤¾ß¼¯ºÍuClibc¿â£¬²¢Ìṩһ¸ö¿ÉÅäÖõĿò¼ÜºÍһЩ¹¹½¨Ò»¸ö»ù±¾ÏµÍ³µÄÅäÖÃÎļþ¡£Óû§Ö»ÐèҪͨ¹ýÅäÖò˵¥Ñ¡ÔñÁËÏàÓ¦µÄÄ¿±êÈí¼þ£¬buildroot¾Í¿ÉÒÔ´Ó¹¹½¨»ù±¾¹¤¾ß¼¯¿ªÊ¼£¬Ò»Ö±µ½×îºó¹¹½¨³öÄ¿±êϵͳËùÐèÒªµÄ¶«Î÷£¬ÈçǶÈëʽϵͳ³£ÓõĻùÓÚext2µÄinitrd£¬jffs¸ùÎļþϵͳ£¬Ñ¹ËõµÄ¸ùĿ¼Ê÷µÈ£¬ÕâЩ´úÂë¶¼ÊÇ»ùÓÚuClibc¶ø²»ÊÇϵͳµÄGlibcµÄ¡£
Buildroot¶ÔÖ÷»ú ......
ʲôÊǺõijÌÐòÔ±£¿ÊDz»ÊǶ®µÃºÜ¶à¼¼Êõϸ½Ú£¿»¹ÊǶ®µ×²ã±à³Ì£¿»¹ÊDZà³ÌËٶȱȽϿ죿
ÎÒ¾õµÃ¶¼²»ÊÇ¡£¶ÔÓÚһЩ¼¼Êõϸ½ÚÀ´ËµºÍµ×²ãµÄ¼¼Êõ£¬Ö»Òª¿´°ïÖú£¬²é×ÊÁϾÍÄÜÕÒµ½£¬¶Ô
ÓÚËٶȿ죬ֻҪ±àµÃ¶àÒ²¾ÍÊìÄÜÉúÇÉÁË¡£
ÎÒÈÏΪºÃµÄ³ÌÐòÔ±Ó¦¸ÃÓÐÒÔϼ¸·½ÃæµÄËØÖÊ£º
1¡¢ÓÐרÑо«Éñ£¬ÇÚÑ§ÉÆÎÊ¡¢¾ÙÒ»·´Èý¡£
2¡¢»ý¼«ÏòÉϵÄ̬¶È£¬Óд´ÔìÐÔ˼ά¡£
3¡¢ÓëÈË»ý¼«½»Á÷¹µÍ¨µÄÄÜÁ¦£¬ÓÐÍŶӾ«Éñ¡£
4¡¢Ç«Ðé½÷É÷£¬½ä½¾½äÔï¡£
5¡¢Ð´³öµÄ´úÂëÖÊÁ¿¸ß¡£°üÀ¨£º´úÂëµÄÎȶ¨¡¢Ò×¶Á¡¢¹æ·¶¡¢Ò×ά»¤¡¢×¨Òµ¡£
ÕâЩ¶¼ÊdzÌÐòÔ±µÄÐÞÑø£¬ÕâÀïÎÒÏë̸̸“±à³ÌÐÞÑø”£¬Ò²¾ÍÊÇÉÏÊöÖеĵÚ5µã¡£ÎÒ¾õµÃ£¬Èç
¹ûÎÒÒªÁ˽âÒ»¸ö×÷Õߣ¬ÎһῴËûËùдµÄС˵£¬Èç¹ûÎÒÒªÁ˽âÒ»¸ö»¼Ò£¬ÎһῴËûËù»µÄͼ
»£¬Èç¹ûÎÒÒªÁ˽âÒ»¸ö¹¤ÈË£¬ÎһῴËûËù×ö³öÀ´µÄ²úÆ·£¬Í¬Ñù£¬Èç¹ûÎÒÒªÁ˽âÒ»¸ö³ÌÐòÔ±
£¬ÎÒÏëÊ×ÏÈÎÒ×îÏë¿´µÄ¾ÍÊÇËûµÄ³ÌÐò´úÂ룬³ÌÐò´úÂë¿ÉÒÔ¿´³öÒ»¸ö³ÌÐòÔ±µÄËØÖʺÍÐÞÑø£¬
³ÌÐò¾ÍÏñÒ»¸ö×÷Æ·£¬ÓÐËØÖÊÓÐÐÞÑøµÄ³ÌÐòÔ±µÄ×÷Æ·±ØÈ»ÊÇһͼ¾«ÃÀµÄͼ»£¬Ò»Ê×ÃÀÃîµÄ¸è
Çú£¬Ò»±¾ÉÍÐÄÔÃÄ¿µÄС˵¡£
ÎÒ¿´¹ýÐí¶à³ÌÐò£¬Ã»ÓÐ×¢ÊÍ£¬Ã»ÓÐËõ ......
ʲôÊǺõijÌÐòÔ±£¿ÊDz»ÊǶ®µÃºÜ¶à¼¼Êõϸ½Ú£¿»¹ÊǶ®µ×²ã±à³Ì£¿»¹ÊDZà³ÌËٶȱȽϿ죿
ÎÒ¾õµÃ¶¼²»ÊÇ¡£¶ÔÓÚһЩ¼¼Êõϸ½ÚÀ´ËµºÍµ×²ãµÄ¼¼Êõ£¬Ö»Òª¿´°ïÖú£¬²é×ÊÁϾÍÄÜÕÒµ½£¬¶Ô
ÓÚËٶȿ죬ֻҪ±àµÃ¶àÒ²¾ÍÊìÄÜÉúÇÉÁË¡£
ÎÒÈÏΪºÃµÄ³ÌÐòÔ±Ó¦¸ÃÓÐÒÔϼ¸·½ÃæµÄËØÖÊ£º
1¡¢ÓÐרÑо«Éñ£¬ÇÚÑ§ÉÆÎÊ¡¢¾ÙÒ»·´Èý¡£
2¡¢»ý¼«ÏòÉϵÄ̬¶È£¬Óд´ÔìÐÔ˼ά¡£
3¡¢ÓëÈË»ý¼«½»Á÷¹µÍ¨µÄÄÜÁ¦£¬ÓÐÍŶӾ«Éñ¡£
4¡¢Ç«Ðé½÷É÷£¬½ä½¾½äÔï¡£
5¡¢Ð´³öµÄ´úÂëÖÊÁ¿¸ß¡£°üÀ¨£º´úÂëµÄÎȶ¨¡¢Ò×¶Á¡¢¹æ·¶¡¢Ò×ά»¤¡¢×¨Òµ¡£
ÕâЩ¶¼ÊdzÌÐòÔ±µÄÐÞÑø£¬ÕâÀïÎÒÏë̸̸“±à³ÌÐÞÑø”£¬Ò²¾ÍÊÇÉÏÊöÖеĵÚ5µã¡£ÎÒ¾õµÃ£¬Èç
¹ûÎÒÒªÁ˽âÒ»¸ö×÷Õߣ¬ÎһῴËûËùдµÄС˵£¬Èç¹ûÎÒÒªÁ˽âÒ»¸ö»¼Ò£¬ÎһῴËûËù»µÄͼ
»£¬Èç¹ûÎÒÒªÁ˽âÒ»¸ö¹¤ÈË£¬ÎһῴËûËù×ö³öÀ´µÄ²úÆ·£¬Í¬Ñù£¬Èç¹ûÎÒÒªÁ˽âÒ»¸ö³ÌÐòÔ±
£¬ÎÒÏëÊ×ÏÈÎÒ×îÏë¿´µÄ¾ÍÊÇËûµÄ³ÌÐò´úÂ룬³ÌÐò´úÂë¿ÉÒÔ¿´³öÒ»¸ö³ÌÐòÔ±µÄËØÖʺÍÐÞÑø£¬
³ÌÐò¾ÍÏñÒ»¸ö×÷Æ·£¬ÓÐËØÖÊÓÐÐÞÑøµÄ³ÌÐòÔ±µÄ×÷Æ·±ØÈ»ÊÇһͼ¾«ÃÀµÄͼ»£¬Ò»Ê×ÃÀÃîµÄ¸è
Çú£¬Ò»±¾ÉÍÐÄÔÃÄ¿µÄС˵¡£
ÎÒ¿´¹ýÐí¶à³ÌÐò£¬Ã»ÓÐ×¢ÊÍ£¬Ã»ÓÐËõ ......
21¡¢gotoÓï¾äµÄʹÓÃ
—————————
NÄêǰ£¬Èí¼þ¿ª·¢µÄÒ»´ú×Úʦ——µÏ½ÜË¹ÌØÀ(Dijkstra)˵¹ý£º“goto statment is
harmful !!”£¬²¢½¨ÒéÈ¡ÏûgotoÓï¾ä¡£ÒòΪgotoÓï¾ä²»ÀûÓÚ³ÌÐò´úÂëµÄά»¤ÐÔ¡£
ÕâÀïÎÒҲǿÁÒ½¨Ò鲻ҪʹÓÃgotoÓï¾ä£¬³ý·ÇÏÂÃæµÄÕâÖÖÇé¿ö£º
#define FREE(p) if(p) { \
free(p); \
p = NULL; \
}
main()
main()
{
char *fname=NULL, *lname=NULL, *mname=NULL;
&nb ......
21¡¢gotoÓï¾äµÄʹÓÃ
—————————
NÄêǰ£¬Èí¼þ¿ª·¢µÄÒ»´ú×Úʦ——µÏ½ÜË¹ÌØÀ(Dijkstra)˵¹ý£º“goto statment is
harmful !!”£¬²¢½¨ÒéÈ¡ÏûgotoÓï¾ä¡£ÒòΪgotoÓï¾ä²»ÀûÓÚ³ÌÐò´úÂëµÄά»¤ÐÔ¡£
ÕâÀïÎÒҲǿÁÒ½¨Ò鲻ҪʹÓÃgotoÓï¾ä£¬³ý·ÇÏÂÃæµÄÕâÖÖÇé¿ö£º
#define FREE(p) if(p) { \
free(p); \
p = NULL; \
}
main()
main()
{
char *fname=NULL, *lname=NULL, *mname=NULL;
&nb ......
C/C++ÖеÄ×Ö·û´®ÎÊÌâÔÚÍøÉϵĽ²½âÒ»Ïò·Ç³£º¬ºý£¬´æÔÚ¸÷¸ö²ã´ÎµÄ¿â»ìÓá¢ÀÄÓõÄÇé¿ö£¬ÓÈÆäÊÇ¿í×Ö·ûÓëÕ×Ö·ûµÈÎÊÌâºÜÄÑÕÒµ½ÓÐЧµÄ×ÊÁÏ£¬±¾ÆªËæ±Ê·ÖÏíÒ»ÏÂÎÒ³¤ÆÚÊÕ¼¯µ½µÄһЩ±È½Ï׼ȷµÄ×ÊÁÏÒÔ¼°¾Ý´ËµÃµ½µÄ¸öÈËÀí½â.
CÓïÑÔÖеÄ×Ö·û´®
CÓïÑÔÖÐÌṩÁËÁ½ÖÖ×Ö·ûÀàÐÍcharºÍwchar_t£¬CÓïÑÔʹÓÃ×Ö·ûÊý×éÀ´±íʾ×Ö·û´®£¬Í¬Ê±Ö§³ÖÁ½ÖÖÖ±½ÓÁ¿Ð´·¨£º"abcd"ºÍ L"abcd"
À´±íʾ×Ö·û´®³£Á¿ÎÄ×ÖÁ¿£¬CÓïÑÔÔÊÐíÓÃ×Ö·û´®³£Á¿À´³õʼ»¯×Ö·û´®¡£±ê×¼Cº¯Êý¿âÌṩÁËprintfºÍwprintfÁ½¸ö°æ±¾µÄÊä³öº¯Êý¡£
#include <stdio.h>
int main(){
char str[] = "abcd";
wchar_t wstr[] = L"abcdÊýѧ";
printf("%s\n",str);
wprintf(L"%s\n",wstr);
return 0;
}
´¿CÓïÑÔ»·¾³Ï£¬¿ÉÒÔʹÓÃÁ½¸öº¯ÊýwcstombsºÍmbstowcs À´½øÐпíÕ×Ö·û´®µÄ»¥Ïàת»»£¬ÏÂÃæÒ»¶ÎÊÇCÓïÑÔÖÐwcstombsµÄÀý×Ó
#include <stdio.h>
#include <stdlib.h>
int mai ......
C/C++ÖеÄ×Ö·û´®ÎÊÌâÔÚÍøÉϵĽ²½âÒ»Ïò·Ç³£º¬ºý£¬´æÔÚ¸÷¸ö²ã´ÎµÄ¿â»ìÓá¢ÀÄÓõÄÇé¿ö£¬ÓÈÆäÊÇ¿í×Ö·ûÓëÕ×Ö·ûµÈÎÊÌâºÜÄÑÕÒµ½ÓÐЧµÄ×ÊÁÏ£¬±¾ÆªËæ±Ê·ÖÏíÒ»ÏÂÎÒ³¤ÆÚÊÕ¼¯µ½µÄһЩ±È½Ï׼ȷµÄ×ÊÁÏÒÔ¼°¾Ý´ËµÃµ½µÄ¸öÈËÀí½â.
CÓïÑÔÖеÄ×Ö·û´®
CÓïÑÔÖÐÌṩÁËÁ½ÖÖ×Ö·ûÀàÐÍcharºÍwchar_t£¬CÓïÑÔʹÓÃ×Ö·ûÊý×éÀ´±íʾ×Ö·û´®£¬Í¬Ê±Ö§³ÖÁ½ÖÖÖ±½ÓÁ¿Ð´·¨£º"abcd"ºÍ L"abcd"
À´±íʾ×Ö·û´®³£Á¿ÎÄ×ÖÁ¿£¬CÓïÑÔÔÊÐíÓÃ×Ö·û´®³£Á¿À´³õʼ»¯×Ö·û´®¡£±ê×¼Cº¯Êý¿âÌṩÁËprintfºÍwprintfÁ½¸ö°æ±¾µÄÊä³öº¯Êý¡£
#include <stdio.h>
int main(){
char str[] = "abcd";
wchar_t wstr[] = L"abcdÊýѧ";
printf("%s\n",str);
wprintf(L"%s\n",wstr);
return 0;
}
´¿CÓïÑÔ»·¾³Ï£¬¿ÉÒÔʹÓÃÁ½¸öº¯ÊýwcstombsºÍmbstowcs À´½øÐпíÕ×Ö·û´®µÄ»¥Ïàת»»£¬ÏÂÃæÒ»¶ÎÊÇCÓïÑÔÖÐwcstombsµÄÀý×Ó
#include <stdio.h>
#include <stdlib.h>
int mai ......
C++µÄstaticÓÐÁ½ÖÖÓ÷¨£ºÃæÏò¹ý³Ì³ÌÐòÉè¼ÆÖеÄstaticºÍÃæÏò¶ÔÏó³ÌÐòÉè¼ÆÖеÄstatic¡£Ç°ÕßÓ¦ÓÃÓÚÆÕͨ±äÁ¿ºÍº¯Êý£¬²»Éæ¼°ÀࣻºóÕßÖ÷Ҫ˵Ã÷staticÔÚÀàÖеÄ×÷Óá£
Ò»¡¢ÃæÏò¹ý³ÌÉè¼ÆÖеÄstatic
1¡¢¾²Ì¬È«¾Ö±äÁ¿
ÔÚÈ«¾Ö±äÁ¿Ç°£¬¼ÓÉϹؼü×Östatic£¬¸Ã±äÁ¿¾Í±»¶¨Òå³ÉΪһ¸ö¾²Ì¬È«¾Ö±äÁ¿¡£ÎÒÃÇÏȾÙÒ»¸ö¾²Ì¬È«¾Ö±äÁ¿µÄÀý×Ó£¬ÈçÏ£º
//Example 1
#include <iostream.h>
void fn();
static int n; //¶¨Ò徲̬ȫ¾Ö±äÁ¿
void main()
{
n=20;
cout<<n<<endl;
fn();
}
void fn()
{
n++;
cout<<n<<endl;
}
¾²Ì¬È«¾Ö±äÁ¿ÓÐÒÔÏÂÌØµã£º
¸Ã±äÁ¿ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棻
δ¾³õʼ»¯µÄ¾²Ì¬È«¾Ö±äÁ¿»á±»³ÌÐò×Ô¶¯³õʼ»¯Îª0£¨×Ô¶¯±äÁ¿µÄÖµÊÇËæ»úµÄ£¬³ý·ÇËü±»ÏÔʽ³õʼ»¯£©£»
¾²Ì¬È«¾Ö±äÁ¿ÔÚÉùÃ÷ËüµÄÕû¸öÎļþ¶¼ÊǿɼûµÄ£¬¶øÔÚÎļþÖ®ÍâÊDz»¿É¼ûµÄ£»¡¡
¾²Ì¬±äÁ¿¶¼ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棬°üÀ¨ºóÃæ½«ÒªÌáµ½µÄ¾²Ì¬¾Ö²¿±äÁ¿¡£¶ÔÓÚÒ»¸öÍêÕûµÄ³ÌÐò£¬ÔÚÄÚ´æÖеķֲ¼Çé¿öÈçÏÂͼ£º
¡¡
´úÂëÇø
È«¾ÖÊý¾ÝÇø
¶ÑÇø
Õ»Çø
¡¡¡¡Ò»°ã³ÌÐòµÄÓÉnew²úÉúµÄ¶¯Ì¬Êý¾Ý´æ·ÅÔÚ¶ÑÇø£¬º¯ÊýÄÚ²¿µÄ×Ô¶¯±äÁ¿´æ·ÅÔÚÕ»Çø¡£×Ô¶¯±äÁ¿Ò»°ã»áËæ×ź¯ÊýµÄÍ˳ö¶øÊͷſռ䣬¾²Ì¬Ê ......
C++µÄstaticÓÐÁ½ÖÖÓ÷¨£ºÃæÏò¹ý³Ì³ÌÐòÉè¼ÆÖеÄstaticºÍÃæÏò¶ÔÏó³ÌÐòÉè¼ÆÖеÄstatic¡£Ç°ÕßÓ¦ÓÃÓÚÆÕͨ±äÁ¿ºÍº¯Êý£¬²»Éæ¼°ÀࣻºóÕßÖ÷Ҫ˵Ã÷staticÔÚÀàÖеÄ×÷Óá£
Ò»¡¢ÃæÏò¹ý³ÌÉè¼ÆÖеÄstatic
1¡¢¾²Ì¬È«¾Ö±äÁ¿
ÔÚÈ«¾Ö±äÁ¿Ç°£¬¼ÓÉϹؼü×Östatic£¬¸Ã±äÁ¿¾Í±»¶¨Òå³ÉΪһ¸ö¾²Ì¬È«¾Ö±äÁ¿¡£ÎÒÃÇÏȾÙÒ»¸ö¾²Ì¬È«¾Ö±äÁ¿µÄÀý×Ó£¬ÈçÏ£º
//Example 1
#include <iostream.h>
void fn();
static int n; //¶¨Ò徲̬ȫ¾Ö±äÁ¿
void main()
{
n=20;
cout<<n<<endl;
fn();
}
void fn()
{
n++;
cout<<n<<endl;
}
¾²Ì¬È«¾Ö±äÁ¿ÓÐÒÔÏÂÌØµã£º
¸Ã±äÁ¿ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棻
δ¾³õʼ»¯µÄ¾²Ì¬È«¾Ö±äÁ¿»á±»³ÌÐò×Ô¶¯³õʼ»¯Îª0£¨×Ô¶¯±äÁ¿µÄÖµÊÇËæ»úµÄ£¬³ý·ÇËü±»ÏÔʽ³õʼ»¯£©£»
¾²Ì¬È«¾Ö±äÁ¿ÔÚÉùÃ÷ËüµÄÕû¸öÎļþ¶¼ÊǿɼûµÄ£¬¶øÔÚÎļþÖ®ÍâÊDz»¿É¼ûµÄ£»¡¡
¾²Ì¬±äÁ¿¶¼ÔÚÈ«¾ÖÊý¾ÝÇø·ÖÅäÄڴ棬°üÀ¨ºóÃæ½«ÒªÌáµ½µÄ¾²Ì¬¾Ö²¿±äÁ¿¡£¶ÔÓÚÒ»¸öÍêÕûµÄ³ÌÐò£¬ÔÚÄÚ´æÖеķֲ¼Çé¿öÈçÏÂͼ£º
¡¡
´úÂëÇø
È«¾ÖÊý¾ÝÇø
¶ÑÇø
Õ»Çø
¡¡¡¡Ò»°ã³ÌÐòµÄÓÉnew²úÉúµÄ¶¯Ì¬Êý¾Ý´æ·ÅÔÚ¶ÑÇø£¬º¯ÊýÄÚ²¿µÄ×Ô¶¯±äÁ¿´æ·ÅÔÚÕ»Çø¡£×Ô¶¯±äÁ¿Ò»°ã»áËæ×ź¯ÊýµÄÍ˳ö¶øÊͷſռ䣬¾²Ì¬Ê ......