摘要: 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。0. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v,不只是取决于在a.c中声明extern int v,还取决于变量v本身是能够被引用到的。这涉及到c语言的另外一个话题--变量的作用域。能够被其他模块以extern修饰符引用到的变量通常是全局变量。还有很重要的一点是,extern 阅读全文
posted @ 2012-04-13 23:38 wanmero 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 摘要本文描述了C++中的各种多态性。重点阐述了面向对象的动态多态和基于模板的静态多态,并初步探讨了两种技术的结合使用。关键词多态 继续 虚函数 模板 宏 函数重载 泛型编程 泛型模式导言多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的非凡行为和单个泛化记号相关联的能力”。和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义。除了常见的通过类继续和虚函数机制生效于运行期的动态多态(dynamic polymorphism)外,模板也答应将不同的非凡行为和单个泛化记号相关联,由 阅读全文
posted @ 2012-04-03 15:08 wanmero 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 几种函数调用方式 __cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 _stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。这些堆栈中的参数由被调用的函数在返回后清除,使用的指令是 retnX,X表示参数占用的字节数,CPU在ret之后自动弹出X个字节的堆栈.. 阅读全文
posted @ 2012-03-30 14:51 wanmero 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 盯市盈亏是期货交易结算的概念之一,期货的结算制度是“每日无负债结算制度”,又称“逐日盯市制度”。 即每个交易日结束后,对所有客户的持仓根据结算价进行结算,有盈利的划入,有亏损的划出。 下面举例说明盯市盈亏和浮动盈亏的区别: 假设某客户开户资金50000元,某日开仓买入大豆5手,开仓价位是3150,收盘时未平仓,结算价为3135。则浮动盈亏为: (3135-3150)*5=-75 期初(资金)余额为50000,期末余额为50000-75=49925(为简化计,不考虑手续费) 盯市盈亏为: (3135-3150)*5=-75 期初客户权益为50000,期末客户权益为50000-75=49925 . 阅读全文
posted @ 2011-08-03 23:39 wanmero 阅读(3245) 评论(0) 推荐(0) 编辑
摘要: 第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。第二:类的继承后方法属性变化。private 属性不能够被继承。使用private继承,父类的prot 阅读全文
posted @ 2011-07-27 14:52 wanmero 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 我实在忍受不了将近2个多月的近达500+延迟的网络速度,一直在寻找降低网络延迟的办法!联系电信,用优化大师,超级魔法兔,能用的都用了,可惜一点效果也没有!!!今天,终于让我发现了以下这篇文章,经过测试,500+的延迟,忽的降到了100以下,现在维持在66,神迹啊!!!开心得我向每个在线的朋友大嚎,被取笑说,小心这样改中病毒,如果让他们经历下2个多月一到晚上500+延迟的痛苦人生,他们就知道我此刻为啥如此兴奋了。但以下这个方法能没有副作用,那是最好的了。在此发表这篇文章的时候,也请版版研究代为研究下,会不会产生不良的副作用,谢谢啦!!!!!!此刻的我兴奋无比阿!!哈哈哈哈哈!!!!!!:)已经. 阅读全文
posted @ 2011-07-22 17:27 wanmero 阅读(7661) 评论(0) 推荐(0) 编辑
摘要: Tom Duff曾经写过这样的函数,其中使用了奇怪的switch...case,他自己称之为duff's device。猛一看,似乎不合乎C的语法规则。但实际上能在所有C编译器下编译通过。其效率据说可以大大提高。Anoop写了一个程序进行测试。转贴如下:view plain/*TheDuffdevice**Aninfamousexampleofhowacompilercanacceptcodethatshould*beillegalasperthelanguagedefinition.Toaddinsulttoinjury,*theillegalcodeactuallyrunsfast 阅读全文
posted @ 2011-07-19 16:23 wanmero 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 为了简化编译器的实现,C语言从语法上规定全局变量只能用常量表达式来初始化,因此下面这种全局变量初始化是不合法的:int minute = 360;int hour = minute / 60;虽然在编译时计算出hour的初始值是可能的,但是minute / 60不是常量表达式,不符合语法规定,所以编译器不必想办法去算这个初始值。 如果全局变量在定义时不初始化则初始值是0,如果局部变量在定义时不初始化则初始值是不确定的。所以,局部变量在使用之前一定要先赋值,如果基于一个不确定的值做后续计算肯定会引入Bug。 “初值不确定”,有没有说这个不确定值不能是0?有没有说这个不确定值不能是上次调用赋的值. 阅读全文
posted @ 2011-06-27 22:54 wanmero 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 需要注意的是,定义变量时可以把相同类型的变量列在一起,而定义参数却不可以,例如下面这样的定义是错的:void print_time(int hour, minute){ printf("%d:%d\n", hour, minute);} 阅读全文
posted @ 2011-06-26 17:30 wanmero 阅读(331) 评论(0) 推荐(0) 编辑
摘要: -l参数和-L参数-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要用libtest.so库里的函数,我们还需要与libtest.so配套的头文件)放在/lib和/usr/lib和/usr/local/lib里的库 阅读全文
posted @ 2011-06-26 12:11 wanmero 阅读(513) 评论(0) 推荐(0) 编辑