¸ù¾ÝACM¹Ù·½ÍøÕ¾3ÔÂ9ÈÕ·¢²¼µÄÏûÏ¢£¬2009ÄêͼÁé½±ÊÚÓèÁËÏÖ´úPCÖ®¸¸Charles Thacker£¬ÒÔ±íÕÃËû¶ÔµÚһ̨ÏÖ´ú¸öÈ˼ÆËã»úXerox PARC AltoµÄÏÈÇýÐÔÉè¼ÆÓëʵÏÖ£¬»¹ÓÐÔÚ¾ÖÓòÍø£¨°üÀ¨ÒÔÌ«Íø£©¡¢¶à´¦ÀíÆ÷¹¤×÷Õ¾¡¢¿ú̽¸ßËÙ»º´æÒ»ÖÂÐÔÐÒéºÍƽ°åPCµÈ·½ÃæµÄÖØ´ó·¢Ã÷ºÍ¹±Ï×£¨For the pioneering design andРrealization of the first modern personal computɥrthe Alto at Xerox PARC and seminal inventionɳ and contributions to local area networks (including the Ethernet), multiprocessor workstations, snooping cache coherence protocols, and tablet personal computers£©¡£
ACMÖ÷ϯDame Wendy Hall˵£¬Charles ThackerÊǼÆËã»úϵͳÁìÓò×î½Ü³öµÄ¹¤³Ìʦ֮һ¡£ËûµÄÒ»¸öÓÖÒ»¸ö³É¾Í¶ÔÏÖ´ú¼ÆËã»ú¼¼Êõ²úÉúÁËÉîÔ¶Ó°Ïì¡£
¶øIntel¹«Ë¾µÄÑо¿ÖÐÐĸ±×ܲÃAndrew ChienÔò±íʾ£¬Charles ThackerµÄAltoÉè¼ÆÒѾ¾ß±¸Á˽ñÌì¸öÈ˵çÄԵĸ÷ÖֹؼüÒªËØ£¬ÎªPCÕâ¸öÊÀ½ç×î¾ß´´ÔìÐÔ¶øÇһݼ°È«ÇòµÄ²úÒµµì¶¨ÁË»ù´¡¡£
ThackerµÄ»ñ½±Ê¹¼ÆËã»úÌåϵ¼Ü¹¹·½ÃæµÄ»ñ½±´ÎÊýÔö¼Óµ½6´Î£¨²»º¬Ö÷Òª¹±Ï×ÊDzÙ×÷ϵͳµÄBrooks£©¡£´Ó»ñ½±Ñ§¿ÆÁìÓòÀ´¿´£¬±à³Ì¼¼ÊõºÍÀíÂÛ¼ÆËã»ú¿ÆÑ§»¹ÊÇ´ó»§ ......
Ò»¸öÓÉc/C++±àÒëµÄ³ÌÐòÕ¼ÓõÄÄÚ´æ·ÖΪÒÔϼ¸¸ö²¿·Ö
1¡¢Õ»Çø£¨stack£©— ÓɱàÒëÆ÷×Ô¶¯·ÖÅäÊÍ·Å £¬´æ·Åº¯ÊýµÄ²ÎÊýÖµ£¬¾Ö²¿±äÁ¿µÄÖµµÈ¡£Æä²Ù×÷·½Ê½ÀàËÆÓÚÊý¾Ý½á¹¹ÖеÄÕ»¡£
2¡¢¶ÑÇø£¨heap£© — Ò»°ãÓɳÌÐòÔ±·ÖÅäÊÍ·Å£¬ Èô³ÌÐòÔ±²»ÊÍ·Å£¬³ÌÐò½áÊøÊ±¿ÉÄÜÓÉOS»ØÊÕ ¡£×¢ÒâËüÓëÊý¾Ý½á¹¹ÖеĶÑÊÇÁ½»ØÊ£¬·ÖÅ䷽ʽµ¹ÊÇÀàËÆÓÚÁ´±í£¬ºÇºÇ¡£
3¡¢È«¾ÖÇø£¨¾²Ì¬Çø£©£¨static£©—£¬È«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿µÄ´æ´¢ÊÇ·ÅÔÚÒ»¿éµÄ£¬³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿ÔÚÒ»¿éÇøÓò£¬ δ³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍδ³õʼ»¯µÄ¾²Ì¬±äÁ¿ÔÚÏàÁÚµÄÁíÒ»¿éÇøÓò¡£ - ³ÌÐò½áÊøºóÓÐϵͳÊÍ·Å
4¡¢ÎÄ×Ö³£Á¿Çø —³£Á¿×Ö·û´®¾ÍÊÇ·ÅÔÚÕâÀïµÄ¡£ ³ÌÐò½áÊøºóÓÉϵͳÊÍ·Å
5¡¢³ÌÐò´úÂëÇø—´æ·Åº¯ÊýÌåµÄ¶þ½øÖÆ´úÂë¡£
È«¾Ö±äÁ¿ int (*myf)(int a) = my_Fun, my_FunÊÇÈ«¾Öº¯Êý
myf±£´æÔÚ(Õ» ), Ö¸ÏòµÄÄÚÈÝÔÚ(´úÂë¶Î )
º¯ÊýÄÚ:static int a = 0; char *p = "abc";
a ±£´æÔÚ(¾²Ì¬Çø ), Ö¸ÏòµÄÄÚÈÝÔÚ(³£Á¿Çø )
º¯ÊýÄÚ:char *ar = new char[4];
ar ±£´æÔÚ( Õ»),Ö¸ÏòµÄÄÚÈÝÔÚ(¶Ñ )
1.ÊÇÒ»¸öº¯ÊýÖ¸Õë,ÔÚÕ»
2.Ò»¸öº¯Êý,ÔÚ´úÂëÇø
3.¾²Ì¬±äÁ¿,ÔÚ¾²Ì¬Çø
4.×Ö· ......
Ò»¸öÓÉc/C++±àÒëµÄ³ÌÐòÕ¼ÓõÄÄÚ´æ·ÖΪÒÔϼ¸¸ö²¿·Ö
1¡¢Õ»Çø£¨stack£©— ÓɱàÒëÆ÷×Ô¶¯·ÖÅäÊÍ·Å £¬´æ·Åº¯ÊýµÄ²ÎÊýÖµ£¬¾Ö²¿±äÁ¿µÄÖµµÈ¡£Æä²Ù×÷·½Ê½ÀàËÆÓÚÊý¾Ý½á¹¹ÖеÄÕ»¡£
2¡¢¶ÑÇø£¨heap£© — Ò»°ãÓɳÌÐòÔ±·ÖÅäÊÍ·Å£¬ Èô³ÌÐòÔ±²»ÊÍ·Å£¬³ÌÐò½áÊøÊ±¿ÉÄÜÓÉOS»ØÊÕ ¡£×¢ÒâËüÓëÊý¾Ý½á¹¹ÖеĶÑÊÇÁ½»ØÊ£¬·ÖÅ䷽ʽµ¹ÊÇÀàËÆÓÚÁ´±í£¬ºÇºÇ¡£
3¡¢È«¾ÖÇø£¨¾²Ì¬Çø£©£¨static£©—£¬È«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿µÄ´æ´¢ÊÇ·ÅÔÚÒ»¿éµÄ£¬³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍ¾²Ì¬±äÁ¿ÔÚÒ»¿éÇøÓò£¬ δ³õʼ»¯µÄÈ«¾Ö±äÁ¿ºÍδ³õʼ»¯µÄ¾²Ì¬±äÁ¿ÔÚÏàÁÚµÄÁíÒ»¿éÇøÓò¡£ - ³ÌÐò½áÊøºóÓÐϵͳÊÍ·Å
4¡¢ÎÄ×Ö³£Á¿Çø —³£Á¿×Ö·û´®¾ÍÊÇ·ÅÔÚÕâÀïµÄ¡£ ³ÌÐò½áÊøºóÓÉϵͳÊÍ·Å
5¡¢³ÌÐò´úÂëÇø—´æ·Åº¯ÊýÌåµÄ¶þ½øÖÆ´úÂë¡£
È«¾Ö±äÁ¿ int (*myf)(int a) = my_Fun, my_FunÊÇÈ«¾Öº¯Êý
myf±£´æÔÚ(Õ» ), Ö¸ÏòµÄÄÚÈÝÔÚ(´úÂë¶Î )
º¯ÊýÄÚ:static int a = 0; char *p = "abc";
a ±£´æÔÚ(¾²Ì¬Çø ), Ö¸ÏòµÄÄÚÈÝÔÚ(³£Á¿Çø )
º¯ÊýÄÚ:char *ar = new char[4];
ar ±£´æÔÚ( Õ»),Ö¸ÏòµÄÄÚÈÝÔÚ(¶Ñ )
1.ÊÇÒ»¸öº¯ÊýÖ¸Õë,ÔÚÕ»
2.Ò»¸öº¯Êý,ÔÚ´úÂëÇø
3.¾²Ì¬±äÁ¿,ÔÚ¾²Ì¬Çø
4.×Ö· ......
ÉùÃ÷£º´ËÎĵĸ÷ÖÖâ«Ëö½â·¨×ª×Ôµç×Ó¿Æ´óÄÚÍøÂÛ̳£¬¶Ô£¬¾ÍÊÇ×î½üÒò”ÐíÔ¸ÃÅ“¶øÉϸ÷´óÐÂÎÅÍøÕ¾µÄѧУ¡£
ÌâÄ¿ÈçÏ£º
#include "stdio.h"
void print()
{
*
}
void main()
{
}
ÒªÇóÔÚ*ºÅ´¦Ìí¼ÓÓï¾ä£¬³ÌÐòÊä³öhello,world!
ºÃÁË£¬ÎÒÖ±½ÓÌù´ð°¸ÁË£¬ÏàÐÅ´ó¼Ò¶¼¿´µÃ¶®£¬ÓÐЩʵÔÚÊÇâ«Ëö¡£¡£¡£Ò²»¶Ó´ó¼Ò²¹³ä£º
//â«Ëö×¢ÊÍÁ÷
#include “stdio.h”
void print()
{
}
void main(){puts(“HelloWorld”);}
/*
}
void main()
{
}
//â«Ëö#defineÁ÷
#include “stdio.h”
void print()
{
#define main main(){printf(“Hello World!\n”);} void empty
}
void main()
{
}
//â«ËöAPIÁ÷¡£
#include “stdio.h”
void print()
{
#pragma comment(linker,”/entry:print”)
#pragma comment(lib,”kernel32.lib”)//¼ÓÉÏÕâ¾ä£¬ÃâµÃijЩXX˵ÎÒâ«Ëö
#define HANDLE unsigned long
#define WINAPI __stdcall
#define DWORD unsigned long
#define BOOL unsigned long
#define STD_OUTPUT_HANDLE ((DWORD)-11)
DWORD ......
±¾ÎÄÀ´×Ô£º http://blog.pfan.cn/xiuandfang/24935.html
±êÇ©:C C ++ string String Êý¾Ý½á¹¹
C×Ö·û´®´¦Àíº¯ÊýµÄʵÏÖ
C×Ö·û´®´¦Àíº¯ÊýµÄʵÏÖ£¨Linux£©
#include <stddef.h>
char * ___strtok = NULL;
char * strcpy(char * dest,const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}
char * strncpy(char * dest,const char *src,size_t count)
{
char *tmp = dest;
while (count-- && (*dest++ = *src++) != '\0')
&nbs ......
1¡¢ һЩͷÎļþµÄ×÷Óãº
<assert.h>£ºANSI C¡£Ìṩ¶ÏÑÔ£¬assert(±í´ïʽ)
<glib.h>£ºGCC¡£GTK£¬GNOMEµÄ»ù´¡¿â£¬ÌṩºÜ¶àÓÐÓõĺ¯Êý£¬ÈçÓÐÊý¾Ý½á¹¹²Ù×÷º¯Êý¡£Ê¹ÓÃglibÖ»ÐèÒª°üº¬<glib.h>
<dirent.h>£ºGCC¡£Îļþ¼Ð²Ù×÷º¯Êý¡£struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()µÈ
<ctype.h>£ºANSI C¡£×Ö·û²âÊÔº¯Êý¡£isdigit(),islower()µÈ
<errno.h>£ºANSI
C¡£²é¿´´íÎó´úÂëerrnoÊǵ÷ÊÔ³ÌÐòµÄÒ»¸öÖØÒª·½·¨¡£µ±linuc C apiº¯Êý·¢ÉúÒ쳣ʱ,Ò»°ã»á½«errno±äÁ¿(Ðèinclude
errno.h)¸³Ò»¸öÕûÊýÖµ,²»Í¬µÄÖµ±íʾ²»Í¬µÄº¬Òå,¿ÉÒÔͨ¹ý²é¿´¸ÃÖµÍÆ²â³ö´íµÄÔÒò¡£ÔÚʵ¼Ê±à³ÌÖÐÓÃÕâÒ»Õнâ¾öÁ˲»ÉÙÔ±¾¿´À´ÄªÃûÆäÃîµÄÎÊÌâ¡£±È½Ï
Âé·³µÄÊÇÿ´Î¶¼ÒªÈ¥linuxÔ´´úÂëÀïÃæ²éÕÒ´íÎó´úÂëµÄº¬Ò壬ÏÖÔÚ°ÑËüÌù³öÀ´£¬ÒÔºóÐèÒª²éʱ¾ÍÀ´ÕâÀï¿´ÁË¡£À´×Ôlinux
2.4.20-18µÄÄں˴úÂëÖеÄ/usr/include/asm/errno.h
<getopt.h>£º´¦ÀíÃüÁîÐвÎÊý¡£getopt()
2¡¢
-------------------------
linux³£ÓÃÍ·ÎļþÈçÏ£º
POSIX±ê×¼¶¨ÒåµÄÍ·Îļþ
<dirent.h> Ŀ¼Ïî
<fcntl.h> &n ......
1¡¢ һЩͷÎļþµÄ×÷Óãº
<assert.h>£ºANSI C¡£Ìṩ¶ÏÑÔ£¬assert(±í´ïʽ)
<glib.h>£ºGCC¡£GTK£¬GNOMEµÄ»ù´¡¿â£¬ÌṩºÜ¶àÓÐÓõĺ¯Êý£¬ÈçÓÐÊý¾Ý½á¹¹²Ù×÷º¯Êý¡£Ê¹ÓÃglibÖ»ÐèÒª°üº¬<glib.h>
<dirent.h>£ºGCC¡£Îļþ¼Ð²Ù×÷º¯Êý¡£struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()µÈ
<ctype.h>£ºANSI C¡£×Ö·û²âÊÔº¯Êý¡£isdigit(),islower()µÈ
<errno.h>£ºANSI
C¡£²é¿´´íÎó´úÂëerrnoÊǵ÷ÊÔ³ÌÐòµÄÒ»¸öÖØÒª·½·¨¡£µ±linuc C apiº¯Êý·¢ÉúÒ쳣ʱ,Ò»°ã»á½«errno±äÁ¿(Ðèinclude
errno.h)¸³Ò»¸öÕûÊýÖµ,²»Í¬µÄÖµ±íʾ²»Í¬µÄº¬Òå,¿ÉÒÔͨ¹ý²é¿´¸ÃÖµÍÆ²â³ö´íµÄÔÒò¡£ÔÚʵ¼Ê±à³ÌÖÐÓÃÕâÒ»Õнâ¾öÁ˲»ÉÙÔ±¾¿´À´ÄªÃûÆäÃîµÄÎÊÌâ¡£±È½Ï
Âé·³µÄÊÇÿ´Î¶¼ÒªÈ¥linuxÔ´´úÂëÀïÃæ²éÕÒ´íÎó´úÂëµÄº¬Ò壬ÏÖÔÚ°ÑËüÌù³öÀ´£¬ÒÔºóÐèÒª²éʱ¾ÍÀ´ÕâÀï¿´ÁË¡£À´×Ôlinux
2.4.20-18µÄÄں˴úÂëÖеÄ/usr/include/asm/errno.h
<getopt.h>£º´¦ÀíÃüÁîÐвÎÊý¡£getopt()
2¡¢
-------------------------
linux³£ÓÃÍ·ÎļþÈçÏ£º
POSIX±ê×¼¶¨ÒåµÄÍ·Îļþ
<dirent.h> Ŀ¼Ïî
<fcntl.h> &n ......
1¡¢ һЩͷÎļþµÄ×÷Óãº
<assert.h>£ºANSI C¡£Ìṩ¶ÏÑÔ£¬assert(±í´ïʽ)
<glib.h>£ºGCC¡£GTK£¬GNOMEµÄ»ù´¡¿â£¬ÌṩºÜ¶àÓÐÓõĺ¯Êý£¬ÈçÓÐÊý¾Ý½á¹¹²Ù×÷º¯Êý¡£Ê¹ÓÃglibÖ»ÐèÒª°üº¬<glib.h>
<dirent.h>£ºGCC¡£Îļþ¼Ð²Ù×÷º¯Êý¡£struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()µÈ
<ctype.h>£ºANSI C¡£×Ö·û²âÊÔº¯Êý¡£isdigit(),islower()µÈ
<errno.h>£ºANSI
C¡£²é¿´´íÎó´úÂëerrnoÊǵ÷ÊÔ³ÌÐòµÄÒ»¸öÖØÒª·½·¨¡£µ±linuc C apiº¯Êý·¢ÉúÒ쳣ʱ,Ò»°ã»á½«errno±äÁ¿(Ðèinclude
errno.h)¸³Ò»¸öÕûÊýÖµ,²»Í¬µÄÖµ±íʾ²»Í¬µÄº¬Òå,¿ÉÒÔͨ¹ý²é¿´¸ÃÖµÍÆ²â³ö´íµÄÔÒò¡£ÔÚʵ¼Ê±à³ÌÖÐÓÃÕâÒ»Õнâ¾öÁ˲»ÉÙÔ±¾¿´À´ÄªÃûÆäÃîµÄÎÊÌâ¡£±È½Ï
Âé·³µÄÊÇÿ´Î¶¼ÒªÈ¥linuxÔ´´úÂëÀïÃæ²éÕÒ´íÎó´úÂëµÄº¬Ò壬ÏÖÔÚ°ÑËüÌù³öÀ´£¬ÒÔºóÐèÒª²éʱ¾ÍÀ´ÕâÀï¿´ÁË¡£À´×Ôlinux
2.4.20-18µÄÄں˴úÂëÖеÄ/usr/include/asm/errno.h
<getopt.h>£º´¦ÀíÃüÁîÐвÎÊý¡£getopt()
2¡¢
-------------------------
linux³£ÓÃÍ·ÎļþÈçÏ£º
POSIX±ê×¼¶¨ÒåµÄÍ·Îļþ
<dirent.h> Ŀ¼Ïî
<fcntl.h> &n ......
ת×Ô£ºhttp://www.bmrtech.com/article/2008/081126.htm
ûÈËÄÜ·ñÈÏǶÈëʽӦÓÃÕý±äµÃÔ½À´Ô½ÆÕ±é¡£µ«ÊÇ£¬µ±ÏµÍ³Ô½À´Ô½¸´ÔÓ£¬¶øÎÒÃǸ³ÓèϵͳԽÀ´Ô½¶àµÄÔðÈεÄʱºò£¬ÎÒÃǽ«±ØÐëÃæ¶ÔÒ»Ð©ÖØÒªÎÊÌâ¡£ÆäÖÐ×îÖØÒªµÄÎÊÌâÊÇ£ºÎÒÃÇÈçºÎ²ÅÄÜÈ·±£Ç¶ÈëʽϵͳÊǰ²È«¿É¿¿µÄ£¿
C ±à³ÌÓïÑÔΪÓû§ÌṩÁËÐí¶àÇ¿´óµÄ¹¦ÄÜ£¬¼¸ºõÓë»ã±àÓïÑÔÒ»ÑùÇ¿´ó¡£´ËÍ⣬ C ÓïÑÔ»¹°üº¬ÁËһЩÔÚ±ê×¼ÖÐδÃ÷È·¶¨ÒåµÄÇøÓòºÍ²»Óö¨Òå¾ÍÄÜʵÏÖµÄÌõ¿î¡£
Óà C À´±àдһ¸ö°²È«¿É¿¿µÄ³ÌÐò²¢²»½ö½öÒâζןóÌÐòÄÜÍêÈ«°´ÕÕ±à³ÌÕßµÄÔ¤ÆÚÀ´ÔËÐС£Ëü±»ÒÆÖ²µ½Ò»¸ö²»Í¬µÄ»·¾³ÏÂÒ²ÐèÒªÕýÈ·ÔËÐС£¸üÖØÒªµÄÊÇ£¬µ±ÆäËûÈËÔ±ÔĶÁÕâЩԴ´úÂëʱ£¬ËüÃDZØÐëÏñË®¾§Ò»ÑùÇåÎúÃ÷ÁË£ºÒ»·½Ãæ¼ò»¯Á˲»±ØÒªµÄ²Â²âºÍÚ¹ÊÍ£¬ÁíÒ»·½Ãæµ±»ùÓÚÕâЩ´úÂëÀ´×ö½øÒ»²½¿ª·¢Ê±£¬Äܹæ±ÜÓÕ·¢Ð´íÎóµÄ·çÏÕ¡£
Æû³µ¹¤ÒµÈí¼þ¿É¿¿ÐÔлá (MISRA) ²ÉÈ¡µÄ´ëÊ©ÊǶ¨ÒåÒ»Ì× C ±à³ÌÓïÑÔµÄ×Ó¼¯¡£Èç¹ûÔÚÓ¦Óÿª·¢ÖнöʹÓÃÕâ¸ö×Ó¼¯£¬ÄÇôÐí¶à C ±à³ÌÓïÑÔÖдæÔÚµÄȱÏݾÍÄܱ»¹æ±ÜÁË¡£
Õâ¸ö×Ó¼¯Ãû³ÆÎª "MISRA C" £¬ÔÚÒ»±¾ÃûΪ“ Guides For The Use Of The C Language In Vehicle Based Software ”µÄÊÖ²áÖÐÓоßÌ嶨Òå¡£¸ÃÖ¸ÄϹ²°üÀ¨ 127 Ìõ¹æÔò£¬·ÖΪ ......