gcc£¬gdbµÄʹÓÃ
×÷Õߣºzccst
ÉÏÖÜÎåÔÚͼÊé¹Ý½èÁËÒ»±¾¡¶LinuxÈí¼þ¹¤³Ìʦ£¨CÓïÑÔ£©ÊµÓý̡̳·£¬ÈÃÎÒÊÕ»ñÁ¼¶à¡£²»½ö½öÊÇÊéÖеÄ֪ʶ£¬»¹ÓжÔ֪ʶÌåϵºÍ¼Ü¹¹ÈÏʶµÄÉîÈë¡£
LinuxÏÂC¿ª·¢£º
1£¬gcc,gdbµÄʹÓá£
2£¬MakefileÎļþµÄ±àд¡£
3£¬ÏµÍ³º¯ÊýµÄʹÓÃ
4£¬Îļþ²Ù×÷
5£¬´®ÐÐͨÐÅ
6£¬½ø³Ì¿ØÖÆ
7£¬½ø³Ì¼äͨÐÅ
8£¬ÍøÂç±à³Ì
9£¬Í¼Ðαà³Ì
10£¬Êý¾Ý¿â±à³Ì
11£¬qt±à³Ì
LinuxÏÂC¿ª·¢Ö®——gcc£¬gdbµÄʹÓÃ
gcc±àÒëÆ÷
ǰÌá±à¼¹¤¾ßµÄʹÓãºvi vim Emacs¡£
vi hello.c
Ò»¡¢³£¼û²½Ö裺
¶ÔÓÚÖ»ÓÐÒ»¸öÔ´ÎļþµÄ¼òµ¥³ÌÐò£¬³£³£Ö»ÓбàÒ룬ÔËÐÐÁ½²½¡£
1£¬gcc hello.c -o hello
2£¬./hello
¶þ¡¢gcc±àÒëÁ÷³Ì
gcc and g++·Ö±ðÊÇgnuµÄc & c++±àÒëÆ÷ gcc/g++ÔÚÖ´ÐбàÒ빤×÷µÄʱºò£¬×ܹ²ÐèÒª4²½
hello.c (Ô´Âë)
hello.i Éú³ÉÔ¤´¦ÀíÎļþ£¬
²ÎÊýÊÇ“-E”£¬°Ñhello.c -> hello.i¡£ÍêÕûÃüÁîΪgcc hello.c -o hello.i -E
hello.s ±àÒëÉú³É»ã±àÎļþ£¬
²ÎÊýÊÇ“-S”£¬°Ñhello.i -> hello.s¡£ÍêÕûÃüÁîΪgcc h ......
gcc£¬gdbµÄʹÓÃ
×÷Õߣºzccst
ÉÏÖÜÎåÔÚͼÊé¹Ý½èÁËÒ»±¾¡¶LinuxÈí¼þ¹¤³Ìʦ£¨CÓïÑÔ£©ÊµÓý̡̳·£¬ÈÃÎÒÊÕ»ñÁ¼¶à¡£²»½ö½öÊÇÊéÖеÄ֪ʶ£¬»¹ÓжÔ֪ʶÌåϵºÍ¼Ü¹¹ÈÏʶµÄÉîÈë¡£
LinuxÏÂC¿ª·¢£º
1£¬gcc,gdbµÄʹÓá£
2£¬MakefileÎļþµÄ±àд¡£
3£¬ÏµÍ³º¯ÊýµÄʹÓÃ
4£¬Îļþ²Ù×÷
5£¬´®ÐÐͨÐÅ
6£¬½ø³Ì¿ØÖÆ
7£¬½ø³Ì¼äͨÐÅ
8£¬ÍøÂç±à³Ì
9£¬Í¼Ðαà³Ì
10£¬Êý¾Ý¿â±à³Ì
11£¬qt±à³Ì
LinuxÏÂC¿ª·¢Ö®——gcc£¬gdbµÄʹÓÃ
gcc±àÒëÆ÷
ǰÌá±à¼¹¤¾ßµÄʹÓãºvi vim Emacs¡£
vi hello.c
Ò»¡¢³£¼û²½Ö裺
¶ÔÓÚÖ»ÓÐÒ»¸öÔ´ÎļþµÄ¼òµ¥³ÌÐò£¬³£³£Ö»ÓбàÒ룬ÔËÐÐÁ½²½¡£
1£¬gcc hello.c -o hello
2£¬./hello
¶þ¡¢gcc±àÒëÁ÷³Ì
gcc and g++·Ö±ðÊÇgnuµÄc & c++±àÒëÆ÷ gcc/g++ÔÚÖ´ÐбàÒ빤×÷µÄʱºò£¬×ܹ²ÐèÒª4²½
hello.c (Ô´Âë)
hello.i Éú³ÉÔ¤´¦ÀíÎļþ£¬
²ÎÊýÊÇ“-E”£¬°Ñhello.c -> hello.i¡£ÍêÕûÃüÁîΪgcc hello.c -o hello.i -E
hello.s ±àÒëÉú³É»ã±àÎļþ£¬
²ÎÊýÊÇ“-S”£¬°Ñhello.i -> hello.s¡£ÍêÕûÃüÁîΪgcc h ......
´òÓ¡×Ô¼ºµÄÒ»¶ÎƯÁÁC³ÌÐò
#include <stdio.h>
int main()
{
char *p ="#include <stdio.h>%c int main(){char *p=%c%s%c; printf(p, 10, 34, p, 34);}";
printf(p, 10, 34, p, 34);
} ......
1.½éÉÜÒ»ÏÂSTL£¬Ïêϸ˵Ã÷STLÈçºÎʵÏÖvector.
Answer£º
STL £¨±ê׼ģ°æ¿â£¬Standard Template Library.ËüÓÉÈÝÆ÷Ëã·¨µü´úÆ÷×é³É¡£
STLÓÐÒÔϵÄһЩÓŵ㣺¿ÉÒÔ·½±ãÈÝÒ×µØÊµÏÖËÑË÷Êý¾Ý»ò¶ÔÊý¾ÝÅÅÐòµÈһϵÁеÄËã·¨£»µ÷ÊÔ³ÌÐòʱ¸ü¼Ó°²È« ºÍ·½±ã£»¼´Ê¹ÊÇÈËÃÇÓÃSTLÔÚUNIXƽ̨ÏÂдµÄ´úÂëÄãÒ²¿ÉÒÔºÜÈÝÒ×µØÀí½â£¨ÒòΪSTLÊÇ¿çÆ½Ì¨µÄ£©¡£
vectorʵÖÊÉϾÍÊÇÒ»¸ö¶¯Ì¬Êý×飬»á¸ù¾ÝÊý¾ÝµÄÔö¼Ó£¬¶¯Ì¬µÄÔö¼ÓÊý×é¿Õ¼ä¡£
2.Èç¹ûÓÃVC¿ª·¢³ÌÐò£¬³£¼ûÕâô¼¸¸ö´íÎó£¬C2001£¬c2005£¬c2011£¬ÕâЩ´íÎóµÄÔÒòÊÇʲô¡£
Answer£º
ÔÚѧϰVC++ µÄ¹ý³ÌÖУ¬Óöµ½µÄLNK2001´íÎóµÄ´íÎóÏûÏ¢Ö÷ҪΪ£ºunresolved external symbol “symbol”£¨²»È·¶¨µÄÍⲿ“·ûºÅ”£©¡£
Èç¹ûÁ¬½Ó³ÌÐò²»ÄÜÔÚËùÓеĿâºÍÄ¿±êÎļþÄÚÕÒµ½ËùÒýÓõĺ¯Êý¡¢±äÁ¿»ò±êÇ©£¬½«²úÉú´Ë´íÎóÏûÏ¢¡£
Ò»°ãÀ´Ëµ£¬·¢Éú´íÎóµÄÔÒòÓÐÁ½¸ö£ºÒ»ÊÇËùÒýÓõĺ¯Êý¡¢±äÁ¿²»´æÔÚ¡¢Æ´Ð´²»ÕýÈ·»òÕßʹÓôíÎ󣻯ä´Î¿ÉÄÜʹÓÃÁ˲»Í¬°æ±¾µÄÁ¬½Ó¿â¡£
±à³ÌÖо³£Ä ......
1.½éÉÜÒ»ÏÂSTL£¬Ïêϸ˵Ã÷STLÈçºÎʵÏÖvector.
Answer£º
STL £¨±ê׼ģ°æ¿â£¬Standard Template Library.ËüÓÉÈÝÆ÷Ëã·¨µü´úÆ÷×é³É¡£
STLÓÐÒÔϵÄһЩÓŵ㣺¿ÉÒÔ·½±ãÈÝÒ×µØÊµÏÖËÑË÷Êý¾Ý»ò¶ÔÊý¾ÝÅÅÐòµÈһϵÁеÄËã·¨£»µ÷ÊÔ³ÌÐòʱ¸ü¼Ó°²È« ºÍ·½±ã£»¼´Ê¹ÊÇÈËÃÇÓÃSTLÔÚUNIXƽ̨ÏÂдµÄ´úÂëÄãÒ²¿ÉÒÔºÜÈÝÒ×µØÀí½â£¨ÒòΪSTLÊÇ¿çÆ½Ì¨µÄ£©¡£
vectorʵÖÊÉϾÍÊÇÒ»¸ö¶¯Ì¬Êý×飬»á¸ù¾ÝÊý¾ÝµÄÔö¼Ó£¬¶¯Ì¬µÄÔö¼ÓÊý×é¿Õ¼ä¡£
2.Èç¹ûÓÃVC¿ª·¢³ÌÐò£¬³£¼ûÕâô¼¸¸ö´íÎó£¬C2001£¬c2005£¬c2011£¬ÕâЩ´íÎóµÄÔÒòÊÇʲô¡£
Answer£º
ÔÚѧϰVC++ µÄ¹ý³ÌÖУ¬Óöµ½µÄLNK2001´íÎóµÄ´íÎóÏûÏ¢Ö÷ҪΪ£ºunresolved external symbol “symbol”£¨²»È·¶¨µÄÍⲿ“·ûºÅ”£©¡£
Èç¹ûÁ¬½Ó³ÌÐò²»ÄÜÔÚËùÓеĿâºÍÄ¿±êÎļþÄÚÕÒµ½ËùÒýÓõĺ¯Êý¡¢±äÁ¿»ò±êÇ©£¬½«²úÉú´Ë´íÎóÏûÏ¢¡£
Ò»°ãÀ´Ëµ£¬·¢Éú´íÎóµÄÔÒòÓÐÁ½¸ö£ºÒ»ÊÇËùÒýÓõĺ¯Êý¡¢±äÁ¿²»´æÔÚ¡¢Æ´Ð´²»ÕýÈ·»òÕßʹÓôíÎ󣻯ä´Î¿ÉÄÜʹÓÃÁ˲»Í¬°æ±¾µÄÁ¬½Ó¿â¡£
±à³ÌÖо³£Ä ......
¹ØÓÚº¯ÊýÖ¸ÕëÊý×éµÄ¶¨Òå
¹ØÓÚº¯ÊýÖ¸ÕëÊý×éµÄ¶¨Òå·½·¨£¬ÓÐÁ½ÖÖ£ºÒ»ÖÖÊDZê×¼µÄ·½·¨£»Ò»ÖÖÊÇÃÉÆ·¨¡£
µÚÒ»ÖÖ£¬±ê×¼·½·¨£º
{
·ÖÎö£ºº¯ÊýÖ¸ÕëÊý×éÊÇÒ»¸öÆäÔªËØÊǺ¯ÊýÖ¸ÕëµÄÊý×é¡£ÄÇôҲ¾ÍÊÇ˵£¬´ËÊý¾Ý½á¹¹ÊÇÊÇÒ»¸öÊý×飬ÇÒÆäÔªËØÊÇÒ»¸öÖ¸Ïòº¯ÊýÈë¿ÚµØÖ·µÄÖ¸Õë¡£
¸ù¾Ý·ÖÎö£ºÊ×ÏÈ˵Ã÷ÊÇÒ»¸öÊý×飺Êý×éÃû[]
Æä´Î£¬ÒªËµÃ÷ÆäÔªËØµÄÊý¾ÝÀàÐÍÖ¸Õë:*Êý×éÃû[].
ÔٴΣ¬ÒªÃ÷È·Õâÿһ¸öÊý×éÔªËØÊÇÖ¸Ïòº¯ÊýÈë¿ÚµØÖ·µÄÖ¸Õ룺º¯Êý·µ»ØÖµÀàÐÍ (*Êý×éÃû[])().Çë×¢Ò⣬ÕâÀïΪʲôҪ°Ñ“*Êý×éÃû[]”ÓÃÀ¨ºÅÀ©ÆðÀ´ÄØ£¿ÒòΪԲÀ¨ºÅºÍÊý×é˵Ã÷·ûµÄÓÅÏȼ¶ÊǵÈͬµÄ£¬Èç¹û²»ÓÃÔ²À¨ºÅ°ÑÖ¸ÕëÊý×é˵Ã÷±í´ïʽÀ©ÆðÀ´£¬¸ù¾ÝÔ²À¨ºÅºÍ·½À¨ºÅµÄ½áºÏ·½Ïò£¬ÄÇô *Êý×éÃû[]() ˵Ã÷µÄÊÇÊ²Ã´ÄØ£¿ÊÇÔªËØ·µ»ØÖµÀàÐÍΪָÕëµÄº¯ÊýÊý×é¡£ÓÐÕâÑùµÄº¯ÊýÊý׿Â𣿲»ÖªµÀ¡£ËùÒÔ±ØÐëÀ¨ÆðÀ´£¬ÒÔ±£Ö¤Êý×éµÄÿһ¸öÔªËØÊÇÖ¸Õë¡£
}
µÚ¶þÖÖ£¬ÃÉÆ·¨£º
¾¡¹Üº¯Êý²»ÊDZäÁ¿£¬µ«ËüÔÚÄÚ´æÖÐÈÔÓÐÆäÎïÀíµØÖ·£¬¸ÃµØÖ·Äܹ»¸³¸øÖ¸Õë±äÁ¿¡£»ñÈ¡º¯Êý·½·¨ÊÇ£ºÓò»´øÓÐÀ¨ºÅºÍ²ÎÊýµÄº¯ÊýÃûµÃµ½¡£
º¯ÊýÃûÏ൱ÓÚÒ»¸öÖ¸ÏòÆäº¯ÊýÈë¿ÚÖ¸Õë³£Á¿¡£ ÄÇô¼ÈÈ»º¯ÊýÃûÊÇÒ»¸öÖ¸Õë³£Á¿£¬ÄÇô¾Í¿ÉÒÔ¶ÔÆä½øÐÐһЩÏàÓ¦µÄ´¦Àí£¬ÈçÇ¿ÖÆÀàÐÍת»»¡£ ......
In C programming language, the observer design pattern is implemented with function pointer (aka callback function). But in Qt library, it introduces signal and slot. How to link a callback function from the C callback function to the C++ siganl and slot is a problem I encounter. Call back function can only be static, but signal and slot can not. There are some triky way to pretend a non-static function to a static function. But the easiest way is to use pipe. the callback function create a pipe and do the read operation, while the siganl function wait for and read at the other end of the pipe.
The pipe is like a worm hole connecting C and C++, two different time and space. How cool! ......
In C programming language, the observer design pattern is implemented with function pointer (aka callback function). But in Qt library, it introduces signal and slot. How to link a callback function from the C callback function to the C++ siganl and slot is a problem I encounter. Call back function can only be static, but signal and slot can not. There are some triky way to pretend a non-static function to a static function. But the easiest way is to use pipe. the callback function create a pipe and do the read operation, while the siganl function wait for and read at the other end of the pipe.
The pipe is like a worm hole connecting C and C++, two different time and space. How cool! ......
CÖеÄCONST¡¡¡¡
CÖÐCONSTµÄʹÓãº
¡¡¡¡constÊÇÒ»¸öCÓïÑԵĹؼü×Ö£¬ËüÏÞ¶¨Ò»¸ö±äÁ¿²»ÔÊÐí±»¸Ä±ä¡£Ê¹ÓÃconstÔÚÒ»¶¨³Ì¶ÈÉÏ¿ÉÒÔÌá¸ß³ÌÐòµÄ°²È«ÐԺͿɿ¿ÐÔ£¬ÁíÍ⣬ÔÚ¹Û¿´±ðÈË´úÂëµÄʱºò£¬ÇåÎúÀí½âconstËùÆðµÄ×÷Ó㬶ÔÀí½â¶Ô·½µÄ³ÌÐòÒ²ÓÐһЩ°ïÖú¡£
¡¡¡¡ËäÈ»ÕâÌýÆðÀ´ºÜ¼òµ¥£¬µ«Êµ¼ÊÉÏ£¬constµÄʹÓÃÒ²ÊÇcÓïÑÔÖÐÒ»¸ö±È½Ï΢ÃîµÄµØ·½£¬Î¢ÃîÔںδ¦ÄØ£¿Çë¿´ÏÂÃæ¼¸¸öÎÊÌâ¡£
¡¡¡¡ÎÊÌ⣺const±äÁ¿ & ³£Á¿
£¨¸ù¾ÝC/C++Éî²ã̽Ë÷Õâ±¾ÊéÀïÃæµÄ±ä³¤Êý×éÕ½ÚËù˵ÕâÑùÔÚC99±ê×¼ÖÐÊÇ¿ÉÒÔµÄÁË¡£ÉõÖÁ¿ÉÒÔÊÇint f();int C[f()];ÕâÑùÊÇΪÁË·½±ãʹÓöàάÊý×é¡£ÓдýÎÒÔÚVC£¬GCCÖÐÑéÖ¤ÁËÔÙ˵£¡£©
¡¡¡¡ÎªÊ²Ã´ÏÂÃæµÄÀý×ÓÔÚʹÓÃÒ»¸öconst±äÁ¿À´³õʼ»¯Êý×飬ANSI CµÄ±àÒëÆ÷»á±¨¸æÒ»¸ö´íÎóÄØ£¿¡¡
¡¡¡¡const int n = 5;
¡¡¡¡int a[n];
¡¡¡¡´ð°¸Óë·ÖÎö:
¡¡¡¡1£©¡¢Õâ¸öÎÊÌâÌÖÂÛµÄÊÇ“³£Á¿”Óë“Ö»¶Á±äÁ¿”µÄÇø±ð¡£³£Á¿¿Ï¶¨ÊÇÖ»¶ÁµÄ£¬ÀýÈç5£¬ “abc”£¬µÈ£¬¿Ï¶¨ÊÇÖ»¶ÁµÄ£¬ÒòΪÒòΪ³£Á¿ÊDZ»±àÒëÆ÷·ÅÔÚÄÚ´æÖеÄÖ»¶ÁÇøÓò£¬µ±È»Ò²¾Í²»Äܹ»È¥ÐÞ¸ÄËü¡£¶ø“Ö»¶Á±äÁ¿”ÔòÊÇÔÚÄÚ´æÖпª±ÙÒ»¸öµØ·½À´´æ·ÅËüµÄÖµ£¬Ö»²»¹ýÕâ¸öÖµÓɱàÒëÆ÷ÏÞ¶¨²»ÔÊÐí±»Ð޸ġ£CÓïÑԹؼü×Öconst¾ ......
CÖеÄCONST¡¡¡¡
CÖÐCONSTµÄʹÓãº
¡¡¡¡constÊÇÒ»¸öCÓïÑԵĹؼü×Ö£¬ËüÏÞ¶¨Ò»¸ö±äÁ¿²»ÔÊÐí±»¸Ä±ä¡£Ê¹ÓÃconstÔÚÒ»¶¨³Ì¶ÈÉÏ¿ÉÒÔÌá¸ß³ÌÐòµÄ°²È«ÐԺͿɿ¿ÐÔ£¬ÁíÍ⣬ÔÚ¹Û¿´±ðÈË´úÂëµÄʱºò£¬ÇåÎúÀí½âconstËùÆðµÄ×÷Ó㬶ÔÀí½â¶Ô·½µÄ³ÌÐòÒ²ÓÐһЩ°ïÖú¡£
¡¡¡¡ËäÈ»ÕâÌýÆðÀ´ºÜ¼òµ¥£¬µ«Êµ¼ÊÉÏ£¬constµÄʹÓÃÒ²ÊÇcÓïÑÔÖÐÒ»¸ö±È½Ï΢ÃîµÄµØ·½£¬Î¢ÃîÔںδ¦ÄØ£¿Çë¿´ÏÂÃæ¼¸¸öÎÊÌâ¡£
¡¡¡¡ÎÊÌ⣺const±äÁ¿ & ³£Á¿
£¨¸ù¾ÝC/C++Éî²ã̽Ë÷Õâ±¾ÊéÀïÃæµÄ±ä³¤Êý×éÕ½ÚËù˵ÕâÑùÔÚC99±ê×¼ÖÐÊÇ¿ÉÒÔµÄÁË¡£ÉõÖÁ¿ÉÒÔÊÇint f();int C[f()];ÕâÑùÊÇΪÁË·½±ãʹÓöàάÊý×é¡£ÓдýÎÒÔÚVC£¬GCCÖÐÑéÖ¤ÁËÔÙ˵£¡£©
¡¡¡¡ÎªÊ²Ã´ÏÂÃæµÄÀý×ÓÔÚʹÓÃÒ»¸öconst±äÁ¿À´³õʼ»¯Êý×飬ANSI CµÄ±àÒëÆ÷»á±¨¸æÒ»¸ö´íÎóÄØ£¿¡¡
¡¡¡¡const int n = 5;
¡¡¡¡int a[n];
¡¡¡¡´ð°¸Óë·ÖÎö:
¡¡¡¡1£©¡¢Õâ¸öÎÊÌâÌÖÂÛµÄÊÇ“³£Á¿”Óë“Ö»¶Á±äÁ¿”µÄÇø±ð¡£³£Á¿¿Ï¶¨ÊÇÖ»¶ÁµÄ£¬ÀýÈç5£¬ “abc”£¬µÈ£¬¿Ï¶¨ÊÇÖ»¶ÁµÄ£¬ÒòΪÒòΪ³£Á¿ÊDZ»±àÒëÆ÷·ÅÔÚÄÚ´æÖеÄÖ»¶ÁÇøÓò£¬µ±È»Ò²¾Í²»Äܹ»È¥ÐÞ¸ÄËü¡£¶ø“Ö»¶Á±äÁ¿”ÔòÊÇÔÚÄÚ´æÖпª±ÙÒ»¸öµØ·½À´´æ·ÅËüµÄÖµ£¬Ö»²»¹ýÕâ¸öÖµÓɱàÒëÆ÷ÏÞ¶¨²»ÔÊÐí±»Ð޸ġ£CÓïÑԹؼü×Öconst¾ ......