[
2006/12/19 08:24 | by turbozv ]

1、Java SDK
http://java.sun.com/j2se/
2、 Sun Java(TM) Wireless Toolkit 2.5 Beta 2
http://java.sun.com/products/sjwtoolkit/download-2_5.html
3、Eclipse SDK 3.2.1
http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.2.1-200609210945/eclipse-SDK-3.2.1-win32.zip
4、EclipseME
http://nchc.dl.sourceforge.net/sourceforge/eclipseme/eclipseme.feature_1.6.0_site.zip
JBuilder被Eclipse打败确实是没有办法的事情……
http://java.sun.com/j2se/
2、 Sun Java(TM) Wireless Toolkit 2.5 Beta 2
http://java.sun.com/products/sjwtoolkit/download-2_5.html
3、Eclipse SDK 3.2.1
http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.2.1-200609210945/eclipse-SDK-3.2.1-win32.zip
4、EclipseME
http://nchc.dl.sourceforge.net/sourceforge/eclipseme/eclipseme.feature_1.6.0_site.zip
JBuilder被Eclipse打败确实是没有办法的事情……
[
2006/12/16 01:00 | by turbozv ]

告别人工编译时代,嘿嘿~ 

@echo off
set VERSION=V2.2
set VCBUILD_PATH=D:\Program Files\Microsoft Visual Studio 8\VC\vcpackages
set EVC3_PATH=D:\Program Files\Microsoft eMbedded Tools\Common\EVC\Bin
set WINRAR_PATH=C:\Program Files\WinRAR
rem =======================================================================
set PATH=%VCBUILD_PATH%;%WINRAR_PATH%;%EVC3_PATH%;PATH
echo "Preparing building envirnment..."
rd /s /q HandCalendar
unrar x HC_Release.rar
copy festivals.txt HandCalendar
copy README.txt HandCalendar
echo "Building PPC2002..."
set FILENAME=HandCalendar.%VERSION%.PPC2002.rar
evc HandCalendar.vcw /MAKE ALL /REBUILD
rar a %FILENAME% HandCalendar
evc HandCalendar.vcw /MAKE ALL /CLEAN
echo "Building PPC2003..."
set FILENAME=HandCalendar.%VERSION%.PPC2003.rar
vcbuild "HandCalendar.vcproj" /r "Release|Pocket PC 2003 (ARMV4)"
vcbuild "todayPlugin\TodayPlugin.vcproj" /r "Release|Pocket PC 2003 (ARMV4)"
rar a %FILENAME% HandCalendar
vcbuild "HandCalendar.sln" /c
echo "Building WM5..."
set FILENAME=HandCalendar.%VERSION%.WM5.rar
vcbuild "HandCalendar.vcproj" /r "Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
vcbuild "todayPlugin\TodayPlugin.vcproj" /r "Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
rar a %FILENAME% HandCalendar
vcbuild "HandCalendar.sln" /c
echo "Cleaning..."
rd /s /q HandCalendar
rd /s /q ARMRel
rd /s /q "Pocket PC 2003 (ARMV4)"
rd /s /q "Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
echo "Done..."
set VERSION=V2.2
set VCBUILD_PATH=D:\Program Files\Microsoft Visual Studio 8\VC\vcpackages
set EVC3_PATH=D:\Program Files\Microsoft eMbedded Tools\Common\EVC\Bin
set WINRAR_PATH=C:\Program Files\WinRAR
rem =======================================================================
set PATH=%VCBUILD_PATH%;%WINRAR_PATH%;%EVC3_PATH%;PATH
echo "Preparing building envirnment..."
rd /s /q HandCalendar
unrar x HC_Release.rar
copy festivals.txt HandCalendar
copy README.txt HandCalendar
echo "Building PPC2002..."
set FILENAME=HandCalendar.%VERSION%.PPC2002.rar
evc HandCalendar.vcw /MAKE ALL /REBUILD
rar a %FILENAME% HandCalendar
evc HandCalendar.vcw /MAKE ALL /CLEAN
echo "Building PPC2003..."
set FILENAME=HandCalendar.%VERSION%.PPC2003.rar
vcbuild "HandCalendar.vcproj" /r "Release|Pocket PC 2003 (ARMV4)"
vcbuild "todayPlugin\TodayPlugin.vcproj" /r "Release|Pocket PC 2003 (ARMV4)"
rar a %FILENAME% HandCalendar
vcbuild "HandCalendar.sln" /c
echo "Building WM5..."
set FILENAME=HandCalendar.%VERSION%.WM5.rar
vcbuild "HandCalendar.vcproj" /r "Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
vcbuild "todayPlugin\TodayPlugin.vcproj" /r "Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
rar a %FILENAME% HandCalendar
vcbuild "HandCalendar.sln" /c
echo "Cleaning..."
rd /s /q HandCalendar
rd /s /q ARMRel
rd /s /q "Pocket PC 2003 (ARMV4)"
rd /s /q "Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
echo "Done..."
[
2006/12/10 00:23 | by turbozv ]

[
2006/11/13 01:33 | by turbozv ]

根据ISO/IEC 14882:2003(E)对C++的标准定义来看,第15页到19页,一个integer后缀可以为:
uU, fF, lL
不过,微软扩展了一些后缀:
http://msdn2.microsoft.com/en-us/library/00a1awxf.aspx
iN (N=8, 16, 32, 64), LL, ll
比如:-1i16, 256i32等等……
让人疑惑的是这个iN。
对于iN的修饰的整型长度为N位,比如sizeof(0i8), sizeof(0i16), sizeof(0i32), sizeof(0i64) 的值分别为1, 2, 4, 8。
你可以将i8理解为(char), 所以 0i8 == (char)(0)。 (当然ui8就是unsigned char, 0ui8 == (unsigned char)0)
请看下面程序:
全部都是等价的操作。
那么,为什么微软要加这样一个定义呢?
来看看常用的地方:
我个人感觉就是避免了一个显式转换而已,其实也可以定义为:
HOHO~
再来看个例子:
要搞清楚这个问题就要知道运算符的优先顺序,"-"是修饰32768还是修饰32768i16的。试验的结果是后者。
所以 -32768i16 被编译器理解为 -(32768i16)。所以 a = -((short)(32768));
不过编译器不支持 (-32768)i16,因为()是表达式了,而i只能修饰定义的常量……
还有一个很让人疑惑的地方就是:
把编译开关设置为 /W4,结果是第一行没有产生警告信息,第二行有丢失数据的警告信息。 我想到的原因就是,常量赋值的时候,编译器很容易做结果检查,所以就自动帮程序员转换成正确的类型了。(你可以试试 char a = 128i32; 就会产生警告信息)。
结论:Compiler is smart enough!
uU, fF, lL
不过,微软扩展了一些后缀:
http://msdn2.microsoft.com/en-us/library/00a1awxf.aspx
iN (N=8, 16, 32, 64), LL, ll
比如:-1i16, 256i32等等……
让人疑惑的是这个iN。
对于iN的修饰的整型长度为N位,比如sizeof(0i8), sizeof(0i16), sizeof(0i32), sizeof(0i64) 的值分别为1, 2, 4, 8。
你可以将i8理解为(char), 所以 0i8 == (char)(0)。 (当然ui8就是unsigned char, 0ui8 == (unsigned char)0)
请看下面程序:
int a;
1)a = 256i8;
2)a = char(256);
3)char c = 256; a = c;
1)a = 256i8;
2)a = char(256);
3)char c = 256; a = c;
全部都是等价的操作。
那么,为什么微软要加这样一个定义呢?
来看看常用的地方:
#define _I32_MIN (-2147483647i32-1) /* minimum signed 32 bit value */
#define _I32_MAX 2147483647i32 /* maximum signed 32 bit value */
#define _UI32_MAX 0xffffffffui32 /* maximum unsigned 32 bit value */
#define _I32_MAX 2147483647i32 /* maximum signed 32 bit value */
#define _UI32_MAX 0xffffffffui32 /* maximum unsigned 32 bit value */
我个人感觉就是避免了一个显式转换而已,其实也可以定义为:
#define _I32_MIN (int32_t)(-2147483647-1) /* minimum signed 32 bit value */
#define _I32_MAX (int32_t)2147483647 /* maximum signed 32 bit value */
#define _UI32_MAX (uint32_t)0xffffffff /* maximum unsigned 32 bit value */
#define _I32_MAX (int32_t)2147483647 /* maximum signed 32 bit value */
#define _UI32_MAX (uint32_t)0xffffffff /* maximum unsigned 32 bit value */
HOHO~
再来看个例子:
int a = -32768i16;
问A等于多少?要搞清楚这个问题就要知道运算符的优先顺序,"-"是修饰32768还是修饰32768i16的。试验的结果是后者。
所以 -32768i16 被编译器理解为 -(32768i16)。所以 a = -((short)(32768));
不过编译器不支持 (-32768)i16,因为()是表达式了,而i只能修饰定义的常量……

还有一个很让人疑惑的地方就是:
char a = 1i32;
int a = 1; b = a;
int a = 1; b = a;
把编译开关设置为 /W4,结果是第一行没有产生警告信息,第二行有丢失数据的警告信息。 我想到的原因就是,常量赋值的时候,编译器很容易做结果检查,所以就自动帮程序员转换成正确的类型了。(你可以试试 char a = 128i32; 就会产生警告信息)。
结论:Compiler is smart enough!