³ÌÐòÔ±µÄ×ÔÎÒÐÞÑø: ³ÌÐòÔËÐеĻùʯ C/C++ÔËÐпâ
Ò»¸öCÓïÑÔÔËÐпâ´óÖ°üº¬ÁËÈçϹ¦ÄÜ:
1. Æô¶¯ÓëÍ˳ö: °üÀ¨Èë¿Úº¯Êý¼°Èë¿Úº¯ÊýËùÒÀÀµµÄÆäËüº¯ÊýµÈ
2. ±ê×¼º¯Êý: ÓÉCÓïÑÔ±ê×¼¹æ¶¨µÄCÓïÑÔ±ê×¼¿âËùÓµÓеĺ¯ÊýʵÏÖ.
3. I/O: IO¹¦Äܵķâ×°ºÍʵÏÖ
4. ¶Ñ:¶ÑµÄ·â×°ºÍʵÏÖ
5. ÓïÑÔʵÏÖ: ÓïÑÔÖÐÒ»Ð©ÌØÊ⹦ÄܵÄʵÏÖ.
6. µ÷ÊÔ: ʵÏÖµ÷ÊÔ¹¦ÄܵĴúÂë.
ÔÚÕâЩÔËÐпâµÄ×é³É³É·ÖÖÐ, CÓïÑÔ±ê×¼Õ¼¾ÝÁËÖ÷Òª²¢ÇÒ´óÓÐÀ´Í·.
1. ±ä³¤²ÎÊý
º¯ÊýµÄʵÏÖÈçÏÂ:
#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )
//va_startÈ¡µÚÒ»¸ö²ÎÊýµÄµØÖ·, ²¢ÔÚÕ»ÉÏÏòÉÏÒÆ¶¯Ö¸Õë
#define _crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
//va_argÖ÷ÒªÊÇÏÈÒÆ¶¯Ö¸Õë,ÔÙÈ¡ÉÏÒ»¸öÖµ.
//×¢Òâ: tÊÇÖ¸Òª´«ÈëµÄÀàÐÍ,ӦΪҪȷ¶¨Òƶ¯µÄÖ¸ÕëµÄÔ¶½ü.
#define _crt_va_end(ap) ( ap = (va_list)0 )
//ʹapÖ¸ÕëΪ0
//Ö÷ÒªÊÇÀûÓÃÕ»µÄÔÀí.
#include <stdio.h>
#include <stdarg.h>
int sum(int a, ...)
{
int v = 0;
va_list ap;
va_start(ap, a);
while(a--)
v += va_arg(ap, int);
va_end(ap);
return v;
}
int main()
{
printf("%d", sum(9, 1,2,3,4,5,6,7,8,9));
return 0;
}
2. ·Ç¾Ö²¿Ìø×ª
#include <setjmp.h>
jmp_buf b;
void f()
{
longjmp(b, 1);
}
int main()
{
if(setjmp(b))
printf("World!");
else
{
printf("Hello ");
f();
}
return 0;
}
½á¹û: Hello World!
µ±µ÷ÓÃlongjmpʱ,ÔËÐе½setjmp·µ»ØµÄλÖÃ,²¢°ÑsetjmpµÄ·µ»ØÉèÖÃΪ1
¹ØÓÚ²»Í¬°æ±¾CRTµÄÎÊÌâ
1. ΪʲôÓÃVC2008±àÒëµÄ³ÌÐòÎÞ·¨ÔÚ±ðÈ˵ĻúÆ÷ÉÏÔËÐÐ?
ÒòΪVC2008±àÒëµÄ³ÌÐòʹÓÃÁËmanifest»úÖÆ, ÕâЩ³ÌÐò±ØÐëÒÀÀµÓÚÏà¶ÔÓ¦°æ±¾µÄÔËÐпâ.
Ò»¸ö½â¾ö°ì·¨¾ÍÊÇʹÓþ²Ì¬Á´½Ó, ÕâÑù¾Í²»ÐèÒªÒÀÀµÓÚCRTµÄDLL.
ÁíÒ»°ì·¨Êǽ«ÏàÓ¦°æ±¾µÄÔËÐпâÓë³ÌÐòÒ»Æð·¢²¼¸ø×îÖÕÓû§.
2. Èç¹ûÒ»¸ö³ÌÐòÀïÃæµÄ²»Í¬objÎļþ»òdllÎļþʹÓÃÁ˲»Í¬µÄCRT, »á²»»áÓÐÎÊÌâ?
Èç¹ûÖ»ÓÐobjûÓÐdll, ÕâʱÊǾ²Ì¬Á´½Ó, ²»Í¬µÄobjÔÚ±àÒëʱÓõ½Á˲»Í¬°æ±¾µÄ¾²Ì¬CRT. Ò»°ãÊDz»»á³öÏÖÎÊÌâµÄ. ÒòΪĿ±êÎļþ¶Ô¾²Ì¬¿âÒýÓÃÖ»ÊÇÔÚÄ¿±êÎļþµÄ·ûºÅ±íÖб£ÁôÒ»¸ö¼ÇºÅ, ²»½øÐÐÁ´½Ó, ûÓо²Ì¬¿âµÄ°æ±¾ÐÅÏ¢.
µ«ÊÇÈç¹ûº¬Óв»Í¬°æ±¾µÄdllÎļþ, ÔòÓпÉÄܳöÏÖÎÊÌâ.
Ïà¹ØÎĵµ£º
C/C++ÊÇ×îÖ÷ÒªµÄ±à³ÌÓïÑÔ¡£ÕâÀïÁгöÁË50ÃûÓÅÐãÍøÕ¾ºÍÍøÒ³Çåµ¥£¬ÕâÐ©ÍøÕ¾Ìṩc/c++Ô´´úÂë¡£Õâ·ÝÇåµ¥ÌṩÁËÔ´´úÂëµÄÁ´½ÓÒÔ¼°ËüÃǵÄС˵Ã÷¡£ÎÒÒѾ¡Á¦°üÀ¨×î¼ÑµÄC/C++Ô´´úÂëµÄÍøÕ¾¡£Õâ²»ÊÇÒ»¸öÍêÕûµÄÇåµ¥£¬ÄúÓн¨Òé¿ÉÒÔÁªÏµÎÒ£¬ÎÒ½«»¶ÓÄúµÄ½¨Ò飬ÒÔ½øÒ»²½¼ÓÇ¿Õâ·½ÃæµÄÇåµ¥¡£
1¡¢http://snippets.dzone.com/tag/c/ --ÊýÒÔǧ¼Æ ......
½ñÌìÔÚVS2005µ÷ÊÔÒ»¸öC# C/S³ÌÐò£¬µ±Í¨¹ýRFCÓëSAPÁ¬½Óʱ¼ä¹ý³¤Ê±£¬³öÏÖ´Ë´íÎó£¬ÔÚÍøÉÏÕÒµ½½â¾ö°ì·¨¡£
VS2008ÉϵÄÒ»¸ö³ÌÐò£¬Í¨¹ýOracle.DataAccess.dllÖ´ÐÐdrop user
cascade²Ù×÷£¬ÎÒÔÚsqlplusÖ´Ðд˲Ù×÷´óÔ¼ÐèÒªÒ»·ÖÖÓ×óÓÒʱ¼ä£¬µ±ÎÒÔÚVS2008ÖÐdebugÆô¶¯´Ë³ÌÐòʱ£¬Ò»Ö±½ÓÊÕµ½
“ContextSwitchDeadlock is detected& ......
http://www.diybl.com/course/3_program/c++/cppjs/20090403/163906.html
CºÍC++»ìºÏ±à³Ì(__cplusplus Óë external "c" µÄʹÓÃ)
www.diybl.com¡¡Ê±¼ä£º2009-04-03¡¡×÷Õß:ÄäÃû ±à¼:sky µã»÷£º¡¡124 [ÆÀÂÛ]
µÚÒ»ÖÖÀí½â
±ÈÈç˵ÄãÓÃC++¿ª·¢ÁËÒ»¸öDLL¿â£¬ÎªÁËÄܹ»ÈÃCÓïÑÔÒ²Äܹ»µ÷ÓÃÄãµÄDLLÊä³ö(Export)µÄº¯Êý£¬ÄãÐèÒªÓÃexte ......
Ò»¸öÓÉC/C++±àÒëµÄ³ÌÐòÕ¼ÓõÄÄÚ´æ·ÖΪÒÔϼ¸¸ö²¿·Ö
1¡¢Õ»Çø£¨stack£©— ³ÌÐòÔËÐÐʱÓɱàÒëÆ÷×Ô¶¯·ÖÅ䣬´æ·Åº¯ÊýµÄ²ÎÊýÖµ£¬¾Ö²¿±äÁ¿µÄÖµµÈ¡£Æä²Ù×÷·½Ê½ÀàËÆÓÚÊý¾Ý½á¹¹ÖеÄÕ»¡£³ÌÐò½áÊøÊ±ÓɱàÒëÆ÷×Ô¶¯ÊÍ·Å¡£
2¡¢¶ÑÇø£¨heap£© — ÔÚÄڴ濪±ÙÁíÒ»¿é´æ´¢ÇøÓò¡£Ò»°ãÓɳÌÐòÔ±·ÖÅäÊÍ·Å£¬ Èô³ÌÐòÔ±²»ÊÍ·Å£¬³ÌÐò½áÊøÊ±¿É ......
ubuntuϵÄc/c++»·¾³´î½¨ÊDZȽϼòµ¥,ÒòΪÓÐaptºÍÐÂÁ¢µÃµÄ°ïÖú.
1.
Ê×ÏÈÊÇÅäÖÃgcc,ÔÚubuntu°²×°Íê³ÉÒѾÓÐgccÁË(gccÊÇÓÉGNUÖ®¸¸StallmanËù¿ª·¢µÄlinuxϵıàÒëÆ÷£¬È«³ÆÎªGNU
Compiler Collection£¬ Ŀǰ¿ÉÒÔ±àÒëµÄÓïÑÔ°üÀ¨£ºC, C++, Objective-C, Fortran, Java,
and
Ada.).µ«ÊÇgcc»¹²»ÄܱàÒëÎļþ.ÒòΪȱÉÙһЩͷÎļþ.Ä ......