Skip navigation.

似水流年

--记录我的点滴

解封了

意外之喜^

好久没记了

呃,freedur 到期了,没办法,现在找了个没边,速度好慢的说。
提前一天回来学校,一直到现在都没心情干活,文章也看不下去,程序也看不下去,天天为了工作发愁。
重大一点的事情就是25号去了趟华阴,陪俺晕车的老婆……第二天买了辆自行车从华阴骑到了西安,后来在Google Earth上测了一下,不算在灞桥走的冤枉路的话,整个行程是130公里,哈哈,她免除了晕车的困扰,我落了个自行车,虽然差了点,900块,邦德富土达的Storm系列,不过还算能用了,呵呵,还落了个好老公的名声……

[转帖]逗号运算符

,

http://stdcpp.cn/html/1/2/0609/155.htm
39. 逗号运算符

来源:蚂蚁的 C/C++ 标准编程 作者:antigloss 等级:一般
发布于2006-09-04 23:27 被读3594次 【字体:大 中 小】


C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:

子表达式1, 子表达式2, ..., 子表达式n

例如:

a + b, c = b, c++

逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。

逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。

下面我们来看一些小例子:

var = 235,567;

乍一看您可能以为这个语句有语法问题,其实它是完全正确的!首先运算逗号左边的子表达式 var = 235,var 被赋值为 235;然后运算右边的子表达式,其值为 567,故而整个逗号表达式的值是 567。可别以为 var 得到的值是 235567 或者 567 哦!如果写成:

var = (235,567);

则 var 得到的值是 567。

逗号也被用作分隔符(separator),例如:

int i_var1 = 1, i_var2 = 2, i_var3 = 3;
printf("%d %d %d\n", i_var1, i_var2, i_var3);

上例中的逗号是分隔符,而不是逗号运算符。

参考资料:C Primer 5th Edition
The C Programming Language 2nd Edition
C99 标准

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。

很矬

才知道static声明的变量只初始化一次.贴一段别人总结的.

========================================================

http://www.1-100.org/other/25030.htm

在C语言编程中,static的一个作用是信息屏蔽!

比方说,你自己定义了一个文件 -- 该文件中有一系列的函数以及变量的声明和定义!

你希望该文件中的一些函数和变量只能被该文件中的函数使用,那么,你可以在该函数、变量的前面加上static,代表他们只能被当前文件中的函数使用!


而在C++中,用static来作为信息屏蔽就显得没有必要了!因为,C++有了信息屏蔽的利器 -- class机制!

类中的private属性的变量和函数就对外禁止访问!


然后是C/C++通用的函数作用域的static型的变量!其目的,也是为了信息的屏蔽!


int fun() {
static int a = 1;
a++;
}

在第一次进入这个函数的时候,变量a被初始化为1!并接着自增1!

以后每次进入该函数,a就不会被再次初始化了,仅进行自增1的操作!

在static发明前,要达到同样的功能,则只能使用全局变量:

int a = 1;

int fun() {
a++;
}

那么,a的值就有可能被其他函数所改变!



最后,说说类中的static变量和函数。


这种存储属性的变量和函数是同一种类的不同实例之间通信的桥梁!


#include <iostream>
using namespace std;

class A {
public:
static int num; // 统计创建了多少个实例
A () {num++}; // 每创建一个实例,就让num自增1

// 返回通过构造函数所创建过的A类实例的数目
static int how_many_instance() {
return num;
}
}

static A::num = 0; // 需要在类申明的外部单独初始化!


int main() {
cout << A::how_many_instance() << endl;
A a, b, c, d;
cout << A::how_many_instance() << endl;
system("pause");
}


一般,在类内部,是通过static属性的函数,访问static属性的变量!

补充一点,在类中,static型的成员函数,由于是类所拥有的,而不是具体对象所有的,这一点对于windows的回调机制非常有用。
因为对于回调函数而言,windows不会借助任何对象去调用它,也就不会传递this指针,那么对于一般成员函数作为回调函数的后果,就是堆栈中有一个随机的变量会成为this指针,这当然会引发程序的崩溃。
而static函数,由于是整个类的,屏蔽了this指针。因此,如果成员函数作为回调函数,就应该用static去修饰它。

[转帖]手机开发平台指南、教程和资料介绍(修改稿)

欢迎转载,转载请注明出处。作者:手机即信息 博客:http://canco.javaeye.com

近来无事,把手机开发平台的学习指南、教程和资料总结一下,方便大家参考。
手机客户端软件开发最大的困难就是平台不统一,手机开发平台太多。
手机可分为智能手机开发和feather phone手机。开发平台可分为开放式平台和封闭式平台,开放式平台包括symbian、windows mobile、linux、iPhone、Android、BlackBerry、j2me、brew等,支持手机应用程序通过OTA下载和安装;封闭式平台包括MTK、展讯、TI、飞利浦等。下面分别介绍。
1. Symbian:
Symbian平台为目前智能手机市场的老大,智能手机全球市场占70%以上,在欧洲和亚洲占绝对优势,只是在美国市场份额少得可怜,希望今年nokia在美国发力,赶上其它智能手机。根据UI风格的不同,Symbian分为s60和UIQ两个平台,其中nokia使用s60平台,索爱和moto采用UIQ平台。Symbian平台由于发展时间较长,又是市场老大,目前中文资料也较多,不像几年前刚接触时只有英文资料。以下书籍值得推荐:
《SYMBIAN OS软件开发开发--应用C++开发智能手机应用程序入门》(其中UI部分为UIQ平台),
《Series 60 应用程序开发》(以s60平台为主,重点推荐)
《Symbian OS C++手机应用开发 (第2卷)》
另外今年将出来一本有关uiq3.0的新书,值得期待。
关于symbian的开发网站和论坛:
诺基亚论坛:最好的symbian论坛,
http://discussion.forum.nokia.com/forum/forumdisplay.php?f=6,其中还有中文论坛。
UIQ官方论坛:http://developer.uiq.com/
Symbian公司中文论坛:http://developer.symbian.com/forum/forum.jspa?forumID=37
NewLC网站:http://www.newlc.com/
索爱uiq官方论坛:http://developer.sonyericsson.com/category.jspa?categoryID=3
索爱uiq中文论坛http://developer.sonyericsson.com/forum.jspa?forumID=133

2.windows mobile:
智能手机全球市场中windows mobile占12%左右市场份额。开发与windows平台类似,所以熟悉windows开发的能很快上手。目前没有较好的针对windows mobile的书,经典书籍《Windows 程序设计(第5版)》对于开发win32程序依然是最好的,经典的书就是牛啊!虽然pocket pc支持MFC,但smartphone不支持,所以为了更好的移植,用win32开发较好。由本书做基础,再参考windows mobile的sdk以及示例代码,应该能很快上手。
关于windows mobile的开发网站和论坛:
Windows mobile中文社区:http://www.winbile.net/BBS/
Pocket pc forum:http://www.windowsmobiledn.com/forum/
微软官方网站:http://www.microsoft.com/windowsmobile/developers/default.mspx

3. linux:
智能手机全球市场中linux手机仅占可怜的4.4%市场份额。原来moto还出过不少linux手机,如A768、A1200、E680、E2、E6、V8等,07年8月份还信誓旦旦预测60%手机采用Linux OS,但moto后来回购了UIQ的股份,又与微软合作,还加入了google的开放手机联盟,看来要抛弃自己的linux平台了。另外,moto的策略是linux+j2me的模式,虽然采用linux os,但并不对外开放linux的sdk,只有和moto合作的厂家才能获得native linux sdk,所以导致目前linux手机开发的资料和论坛较少。虽然有民间linux高手破解了moto的linux的sdk,可以开发native linux的程序,但native linux的程序不能直接安装在moto的linux手机上,还必须安装一个插件,这对普通用户又是难以跨越的一个门槛。所以个人觉得native linux手机的开发将走向末路。大部分linux手机的ui开发都是基于QT,关于QT开发,可参考《C++ GUI Qt3编程》、《精通Qt4编程》,如果有moto官方的sdk,参考API文档以及一些示例代码,将可以较快上手,如果没有官方的sdk,那就要话很长时间hack了。目前没有很好的关于linux手机开发的论坛,个人推荐陈罡的博客http://www.cublog.cn/u/26691/,内有moto a1200开发随笔,对于熟悉和了解手机native linux开发有很大帮助。

4. MTK:
MTK最近几年异军突起,近70%的国产手机采用MTK的芯片和平台,黑手机更几乎是MTK的代名词。国内厂家只有夏新没有采用MTK的方案。MTK的模式名为“Turn-key”的全面解决方案,厂商采用了这个方案,只需要加一个手机外壳即可成品——这能大大降低了出货时间,一般厂家只修改界面、铃声以及增加一些应用软件。有关MTK平台的介绍,见环球企业家杂志的文章“国产手机操纵者联发科的秘密”http://www.cnbeta.com/articles/45580.htm。
MTK是私有平台,目前没有书籍介绍MTK平台,所以只能从网上查找MTK的资料。以下资料大家可以从网上获得,对于了解MTK很有帮助:《mtk 训练课程.pdf》、《MMI Platform Source Code Training.pdf》主要是MMI界面开发介绍、《MMI Resource & Customization Tool.pdf》MMI资源工具介绍。
最近,MTK平台MMI设计牛人FUGUI自己编写了一本有关mtk平台MMI开发的实例教程,书名为《MMI实例培训教程》(本书大家通过Google下载到),此书深入浅出,全面的介绍了MTK平台MMI开发的各个方面,通过本书,开发人员将能很快进入MTK平台开发领域,实为MTK平台MMI开发的圣经!MTK平台的操作系统为nucleus,有关nucleus的介绍网上有一篇文章《Nucleus实时操作系统分析报告》。MTK平台主要用C语言开发,所以要熟悉MTK开发,首先必须熟悉掌握C语言,MTK的sdk与vc6集成,MMI的各控件和窗口之间通过回调函数实现通讯。
关于MTK的开发网站和论坛:
我爱研发网:http://www.52rd.com/ 上面几篇文章和书籍都能从本网站找到。
手机研发论坛:http://www.1mp.cc/bbs/index.asp


5. 展讯:
展讯平台07年也发展很快,利用MTK下半年PA放大器缺货的机会,趁势而入,抢走mtk很多市场份额。展讯的开发模式和MTK的很类似,基本也是给厂家提供整体解决方案,与MTK的差别见此链接http://www.chinabyte.com/telecom/267/2507267.shtml。国内主要是夏新、联想、文泰等采用展讯平台。展讯平台采用的嵌入式操作系统是threadx,关于threadx的有一本中文书《嵌入式实时操作系统的多线程计算:基于ThreadX和ARM》。同MTK平台一样,为封闭平台,开发语言为C,开发环境为vc6, MMI的各控件和窗口之间与windows类似通过消息进制实现通讯。另外也没有书籍介绍展讯平台,以下资料值得推荐:
《Spreadtrum_SAP.ppt》
《MMK_Kernel软件API接口说明书.doc》
《MMK_Window_Table开发说明书.doc》
《展讯平台MMI窗口开发说明书.pdf》
《展讯手机平台软件简介.pdf》
关于展讯的开发网站和论坛:
我爱研发网:http://www.52rd.com/ 上面几篇文章都能从本网站找到。
手机研发论坛:http://www.1mp.cc/bbs/index.asp

6. J2ME:
J2ME平台为手机上运用最广泛的开放式平台,绝大部分手机均已经支持J2ME了。关于J2ME的书籍数不胜数,个人推荐以下书籍:
《j2me技术手册》
《J2ME开发大全》
《J2ME移动应用程序开发》
关于J2ME的开发网站和论坛:
J2ME开发网:http://www.j2medev.com/Index.html
中国Java手机网:http://www.cnjm.net/
以及各手机厂商的官方java论坛

7. Brew
Brew 的全称是无线二进制运行时环境。Brew平台是高通公司开发的,从无线应用程序开发、设备配置、应用程序分发以及计费和支付的完整端到端解决方案中的无线应用程序开发部分。目前绝大部分CDMA手机都支持Brew平台。学习Brew平台,首先需要熟悉c语言。学习步骤和方法可参考” BREW高手之路-解析BREW学习过程”。
学习书籍:
《深入BREW手机游戏开发》
《BREW 技术开发与应用》
这些书虽然不够深入,但对于入门还是可以参考的。
关于Brew的开发网站和论坛:
Brew官方论坛:http://brewforums.qualcomm.com/index.php

8. iPhone
Windows平台iPhone开发环境搭建方法见笔者的文章《Windows平台上iPhone基于cygwin开发环境的搭建方法》
http://canco.javaeye.com/admin/blogs/199106


开发入门介绍见笔者的文章《iPhone手机开发平台入门介绍和教程》
http://canco.javaeye.com/admin/blogs/199144


9. Blackberry,Android
黑莓公司BlackBerry手机和Google的Android手机均只支持java开发。BlackBerry的开发网站和论坛:
BlackBerry开发者指南:http://www.cnblogs.com/confach/category/36451.htmlBlackBerry官方网站:http://na.blackberry.com/eng/developers/community.jsphttp://bbs.maxpda.com/forum-184-1.html
Android的开发网站和论坛:
http://www.androiddev.net.cn/bbs/
http://www.androidin.com/http://www.androidcn.net/
http://bbs.maxpda.com/forum-190-1.html


10. 其它Feather phone平台
其它feather phone平台,如TI、飞利浦、英飞凌(Infineon)、飞思卡尔(Freescale)、Broadcom、Skyworks等平台,由于平台私有,并且不提供第三方sdk,所以也没有相关资料和文档,希望有了解的朋友介绍一下。

freedur 可以翻墙

写几个字,哈哈
记得以前最爱YUMUMAO定制的OPERA,可惜TA早就不更新了,只能用官方版的,还好,OPERA10还蛮好用的,呵呵。
呃,突然发现现在是在FF下,罪过,罪过……
December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31