×î½üÔÚÑо¿²Ù×÷ϵͳ£¬¡¶×Ô¼º¶¯ÊÖд²Ù×÷ϵͳ¡·ÉϵÚ5Õ½²ÁËasmºÍcº¯ÊýÖ®¼ä»¥µ÷Óã¬Ä¿µÄÊÇʹÓÃcÀ´Ð´²Ù×÷ϵͳÄں˵ĴúÂ룬±Ï¾¹Óûã±àд´úÂ뻹ÊǺܷÑʱ¼äµÄÊ¡£
ÅäÖÃLinux¿ª·¢»·¾³ÊµÔÚÊÇÌ«Âé·³£¬Òª×°ÐéÄâ»ú£¬»¹ÒªÅäÖÃÀϰëÌì¡£ÓÚÊǾÍÏëÄܶ¼ÔÚwindows»·¾³ÏÂʵÏÖ»¥µ÷Ó㬺Ü×ÔÈ»µÄÏëµ½ÁËmingw½»²æ»·¾³¡£ÓÚÊÇÏÂÁËÒ»¸öwin32°æ±¾µÄnasm±àÒëÆ÷£¬ÓÃnasm±àÒë»ã±à£¬ÓÃgcc±àÒëc£¬²éÁËÒ»ÏÂnasmµÄ±àÒëÑ¡Ïî-f¿ÉÒÔÖ¸¶¨asmÎļþµÄÄ¿±ê¸ñʽ£¬¹À¼Æ¿ÉÐУ¬µ«¿¼Âǵ½mingwÊǽ»²æ»·¾³£¬¸Ð¾õÉÏ»¹ÊÇÓÃcl.exeÀ´±àcÎļþ±È½ÏºÃ£¬·´ÕýnasmÒ²Ö§³Öµ¼³öwin32¸ñʽµÄobjÎļþ¡£ÊÔÁËһϿÉÐУ¬ÏÖ½«´úÂëÌùÉÏÀ´¡£Ò»¹²Èý¸öÎļþ£ºbar.c, foo.asm, makefile.ÄÚÈÝÈçÏ£º
1. bar.c
#include <stdio.h>
void myprint(); // º¯ÊýÉùÃ÷
int choose(int a, int b)
{
int c;
// __asm int 3; // ¼Ó¶Ïµã»á½øÈëVSµ÷ÊÔÆ÷
__asm{ // ÄÚǶ»ã±à²âÊÔ£¬µÈ¼ÛÓÚ£ºc = b + 1;
mov eax, dword ptr [b]
inc eax
mov dword ptr [c], eax
}
printf("a = %d, b = %d, c = %d.\n", a, b, c); // Êä³ö£ºa = 3, b = 4, c = 5.
myprint(); // ......
ÓúêʵÏÖÒ»¸öswap¹¦ÄÜ
#include <stdio.h>
#include <stdlib.h>
#define SWAP( TYPE,ARG1,ARG2 ) \
void TYPE##Swap( TYPE *p, TYPE *q ) \
{ \
TYPE tmp = *p; \
*p = *q; \
*q = tmp; \
} \
TYPE##Swap(&ARG1,&ARG2);
int main()
{
int a = 1;
int b = 2;
char c = 'c';
char d = 'd';
SWAP(int,a,b);
printf("a:%d,b:%d\n",a,b);
SWAP(char,c,d);
printf("c:%c,d:%c",c,d);
} ......
ººÅµËþËã·¨µÄµÝ¹éÓë·ÇµÝ¹éµÄCÒÔ¼°C++Ô´´úÂë
By Minidxer | January 30, 2008
ººÅµËþ£¨ÓֳƺÓÄÚËþ£©ÎÊÌâÆäʵÊÇÓ¡¶ÈµÄÒ»¸ö¹ÅÀϵĴ«Ëµ¡£
¿ªÌì±ÙµØµÄÉñ²ªÀÂ꣨ºÍÖйúµÄÅ̹Ų¶àµÄÉñ°É£©ÔÚÒ»¸öÃíÀïÁôÏÂÁËÈý¸ù½ð¸ÕʯµÄ°ô£¬µÚÒ»¸ùÉÏÃæÌ××Å64¸öÔ²µÄ½ðƬ£¬×î´óµÄÒ»¸öÔÚµ×Ï£¬ÆäÓàÒ»¸ö±ÈÒ»¸öС£¬ÒÀ´ÎµþÉÏÈ¥£¬ÃíÀïµÄÖÚÉ®²»¾ëµØ°ÑËüÃÇÒ»¸ö¸öµØ´ÓÕâ¸ù°ô°áµ½ÁíÒ»¸ù°ôÉÏ£¬¹æ¶¨¿ÉÀûÓÃÖмäµÄÒ»¸ù°ô×÷Ϊ°ïÖú£¬µ«Ã¿´ÎÖ»ÄܰáÒ»¸ö£¬¶øÇÒ´óµÄ²»ÄÜ·ÅÔÚСµÄÉÏÃæ¡£¼ÆËã½á¹û·Ç³£¿Ö²À(ÒÆ¶¯Ô²Æ¬µÄ´ÎÊý)18446744073709551615£¬ÖÚÉ®ÃǼ´±ãÊǺľ¡±ÏÉú¾«Á¦Ò²²»¿ÉÄÜÍê³É½ðƬµÄÒÆ¶¯ÁË¡£
Ëã·¨½éÉÜ£º
ÆäʵËã·¨·Ç³£¼òµ¥£¬µ±ÅÌ×ӵĸöÊýΪnʱ£¬Òƶ¯µÄ´ÎÊýÓ¦µÈÓÚ2^n – 1£¨ÓÐÐËȤµÄ¿ÉÒÔ×Ô¼ºÖ¤Ã÷ÊÔÊÔ¿´£©¡£ºóÀ´Ò»Î»ÃÀ¹úѧÕß·¢ÏÖÒ»ÖÖ³öÈËÒâÁϵļòµ¥·½·¨£¬Ö»ÒªÂÖÁ÷½øÐÐÁ½²½²Ù×÷¾Í¿ÉÒÔÁË¡£Ê×ÏȰÑÈý¸ùÖù×Ó°´Ë³ÐòÅųɯ·×ÖÐÍ£¬°ÑËùÓеÄÔ²Å̰´´Ó´óµ½Ð¡µÄ˳Ðò·ÅÔÚÖù×ÓAÉÏ£¬¸ù¾ÝÔ²Å̵ÄÊýÁ¿È·¶¨Öù×ÓµÄÅÅ·Å˳Ðò£ºÈônΪżÊý£¬°´Ë³Ê±Õë·½ÏòÒÀ´Î°Ú·Å A B C£»
ÈônÎªÆæÊý£¬°´Ë³Ê±Õë·½ÏòÒÀ´Î°Ú·Å A C B¡£
£¨1£©°´Ë³Ê±Õë·½Ïò°ÑÔ²ÅÌ1´ÓÏÖÔÚµÄÖù×ÓÒÆ¶¯µ½ÏÂÒ»¸ùÖù×Ó£¬¼´µ±nΪżÊýʱ£¬ÈôÔ²ÅÌ1ÔÚÖù×ÓA£ ......
ººÅµËþËã·¨µÄµÝ¹éÓë·ÇµÝ¹éµÄCÒÔ¼°C++Ô´´úÂë
By Minidxer | January 30, 2008
ººÅµËþ£¨ÓֳƺÓÄÚËþ£©ÎÊÌâÆäʵÊÇÓ¡¶ÈµÄÒ»¸ö¹ÅÀϵĴ«Ëµ¡£
¿ªÌì±ÙµØµÄÉñ²ªÀÂ꣨ºÍÖйúµÄÅ̹Ų¶àµÄÉñ°É£©ÔÚÒ»¸öÃíÀïÁôÏÂÁËÈý¸ù½ð¸ÕʯµÄ°ô£¬µÚÒ»¸ùÉÏÃæÌ××Å64¸öÔ²µÄ½ðƬ£¬×î´óµÄÒ»¸öÔÚµ×Ï£¬ÆäÓàÒ»¸ö±ÈÒ»¸öС£¬ÒÀ´ÎµþÉÏÈ¥£¬ÃíÀïµÄÖÚÉ®²»¾ëµØ°ÑËüÃÇÒ»¸ö¸öµØ´ÓÕâ¸ù°ô°áµ½ÁíÒ»¸ù°ôÉÏ£¬¹æ¶¨¿ÉÀûÓÃÖмäµÄÒ»¸ù°ô×÷Ϊ°ïÖú£¬µ«Ã¿´ÎÖ»ÄܰáÒ»¸ö£¬¶øÇÒ´óµÄ²»ÄÜ·ÅÔÚСµÄÉÏÃæ¡£¼ÆËã½á¹û·Ç³£¿Ö²À(ÒÆ¶¯Ô²Æ¬µÄ´ÎÊý)18446744073709551615£¬ÖÚÉ®ÃǼ´±ãÊǺľ¡±ÏÉú¾«Á¦Ò²²»¿ÉÄÜÍê³É½ðƬµÄÒÆ¶¯ÁË¡£
Ëã·¨½éÉÜ£º
ÆäʵËã·¨·Ç³£¼òµ¥£¬µ±ÅÌ×ӵĸöÊýΪnʱ£¬Òƶ¯µÄ´ÎÊýÓ¦µÈÓÚ2^n – 1£¨ÓÐÐËȤµÄ¿ÉÒÔ×Ô¼ºÖ¤Ã÷ÊÔÊÔ¿´£©¡£ºóÀ´Ò»Î»ÃÀ¹úѧÕß·¢ÏÖÒ»ÖÖ³öÈËÒâÁϵļòµ¥·½·¨£¬Ö»ÒªÂÖÁ÷½øÐÐÁ½²½²Ù×÷¾Í¿ÉÒÔÁË¡£Ê×ÏȰÑÈý¸ùÖù×Ó°´Ë³ÐòÅųɯ·×ÖÐÍ£¬°ÑËùÓеÄÔ²Å̰´´Ó´óµ½Ð¡µÄ˳Ðò·ÅÔÚÖù×ÓAÉÏ£¬¸ù¾ÝÔ²Å̵ÄÊýÁ¿È·¶¨Öù×ÓµÄÅÅ·Å˳Ðò£ºÈônΪżÊý£¬°´Ë³Ê±Õë·½ÏòÒÀ´Î°Ú·Å A B C£»
ÈônÎªÆæÊý£¬°´Ë³Ê±Õë·½ÏòÒÀ´Î°Ú·Å A C B¡£
£¨1£©°´Ë³Ê±Õë·½Ïò°ÑÔ²ÅÌ1´ÓÏÖÔÚµÄÖù×ÓÒÆ¶¯µ½ÏÂÒ»¸ùÖù×Ó£¬¼´µ±nΪżÊýʱ£¬ÈôÔ²ÅÌ1ÔÚÖù×ÓA£ ......
googletest C/C++ ²âÊÔ¿ò¼Ü·Ç³£ºÃÓ㬽éÉܼ°ÏÂÔØÇë¿´ http://code.google.com/p/googletest/
//============================================================================
// ʹÓà googletest ²âÊÔ¿ò¼Ü
//============================================================================
// Returns n! (the factorial of n). For negative n, n! is defined to be 1.
int Factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}
#include "src/gtest-all.cc"
// Tests Factorial().
// Tests factorial of negative numbers.
TEST(FactorialTest, Negative)
{
EXPECT_EQ(1, Factorial(-5));
EXPECT_EQ(1, Factorial(-1));
EXPECT_TRUE(Factorial(-10)> 0);
}
// Tests factorial of 0.
TEST(FactorialTest, Zero)
{
EXPECT_EQ(1, Factorial(0));
}
// Tests factorial of positive numbers.
TEST(FactorialTest, Positive)
{
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(2, Factorial(2));
EXPEC ......
//ijˮÍõµÄ·¢ÌûÊý³¬¹ý×ÜÌùÊýµÄÒ»°ë£¬ÕÒ³öÖ®
int find(int *ID, int N)
{
int candidate;
int nTimes, i;
for (i = nTimes = 0; i < N; i++)
{
if (nTimes == 0)
{
candidate = ID[i];
nTimes = 1;
}
else if (candidate == ID[i])
{
nTimes++;
}
else
{
nTimes--;
}
}
return candidate;
} ......
/*
˼·£ºµÝ¹éËã·¨
´Ó¿ªÊ¼ÍùºóµÝÔöµØÐ´Êý×Ö£¬µ±Ç°´ÓnowÖµ¿ªÊ¼£¬´æ´¢µÄλÖôÓcur¿ªÊ¼£¬
ÔòÏÔÈ»¼ÓÉÏ£¬now..n£¬¶¼ÊÇеÄ×éºÏÊý£¬¶ÔÓÚÿһ¸ö£¬{ Êä³öÖ®£¬È»ºóµÝ¹é£¬´¦Àí _c(n, cur+1, a, i+1) }
*/
/* Êä³ö1,2,3,..,nµÄ×éºÏÊý */
#include <stdio.h>
#include <assert.h>
#include <malloc.h>
void c(int n)
{
extern void _c(int n, int cur, int *a, int now);
int *a;
a = (int *) malloc(n * sizeof(int));
assert(a != NULL);
_c(n, 0, a, 1);
free(a);
}
void _c(int n, int cur, int *a, int now)
{
int i,j;
for (i=now; i<=n; i++)
{
a[cur] = i;
for (j=0; j<=cur; j++)
{
printf("%d ", a[j]);
}
printf("\n");
_c(n, cur+1, a, i+1);
}
}
int main()
{
c(3);
}
......