| Differences | Compiling |
| Microsoft C++ Keywords | Costs |
| Microsoft C++ sizeof | Books |
| C/C++ Header Libraries | Links |
Java superficially looks a lot like C++, but nearly all my trouble learning Java came from presuming it should work the same as C++ or should have buried somewhere some feature I used in C++. It works quite differently inside and has a completely different design philosophy. The rule of thumb is, don’t presume Java works the same as C++ just because the syntax looks the same. Java is a bit like an angler fish that dangles a C++ syntax lure to seduce C++ programmers into trying Java (for their own good, of course), but it works at a higher level of abstraction.
The major differences between C++ and Java are:
| Microsoft C++ Keywords | ||||||
|---|---|---|---|---|---|---|
| __abstract | __int | __try_cast | delete | goto | property | true |
| __alignof | __int6 | __unaligned | deprecated | if | protected | try |
| __asm | __int64 | __unhook | dllexport | in | public | typedef |
| __assume | __int8 | __uuidof | dllimport | initonly | ref | typeid |
| __based | __interface | __value | do | inline | register | typename |
| __box | __leave | __virtual_inheritance | double | int | reinterpret_cast | union |
| __cdecl | __m64 | __w64 | dynamic_cast | interface | return | unsigned |
| __declspec | __m8 | __wchar_t | each | interior_ptr | safecast | using |
| __delegate | __m8d | abstract | else | literal | sealed | uuid |
| __event | __m8i | array | enum | long | selectany | value |
| __except | __multiple_inheritance | bool | event | mutable | short | virtual |
| __fastcall | __nogc | break | explicit | naked | signed | void |
| __finally | __noop | case | extern | namespace | sizeof | volatile |
| __finally | __pin | catch | false | new | static | wchar_t |
| __forceinline | __property | char | finally | noinline | static_cast | while |
| __gc | __raise | class | float | noreturn | struct | |
| __hook | __sealed | const | for | nothrow | switch | |
| __identifier | __single_inheritance | const_cast | friend | novtable | template | |
| __if_exists | __stdcall | continue | friend_as | nullptr | this | |
| __if_not_exists | __super | default | gcnew | operator | thread | |
| __inline | __try | delegate | generic | private | throw | |
| sizeof various data types is Microsoft C++ for Windows Vista | ||||
|---|---|---|---|---|
| C++ Type | Closest
Java Type |
Bytes | Bits | Notes |
| boolean | boolean | 1 | 8 | 1-byte boolean, defined as unsigned char. |
| BOOLEAN | boolean | 1 | 8 | 1-byte boolean |
| byte | byte | 1 | 8 | unsigned |
| BYTE | byte | 1 | 8 | unsigned |
| char | byte | 1 | 8 | 8-bit signed chars. |
| unsigned char | byte | 1 | 8 | 8-bit unsigned chars. |
| TCHAR | char | 2 | 16 | Unicode 16-bit chars. On older systems compiles to 8-bit. |
| wchar_t | char | 2 | 16 | Unicode 16-bit unsigned chars |
| WCHAR | char | 2 | 16 | Unicode 16-bit unsigned chars |
| short | short | 2 | 16 | signed |
| USHORT | char | 2 | 16 | unsigned |
| int | int | 4 | 32 | signed |
| size_t | int | 4 | 32 | unsigned |
| BOOL | boolean | 4 | 32 | 4-byte boolean |
| long | int | 4 | 32 | signed |
| DWORD | int | 4 | 32 | unsigned |
| void* | Object | 4 | 32 | Pointer/Reference |
| float | float | 4 | 32 | IEEE float |
| long long | long | 8 | 64 | signed |
| double | double | 8 | 64 | IEEE double |
| Common C/C++ header files | |
|---|---|
| Header | Contents |
| afx.h | includes Windows API and common C headers too. |
| afxcmn.h | MFC support for Windows Common Controls |
| afxdtctl.h | MFC support for Internet Explorer 4 Common Controls |
| afxext.h | MFC extensions |
| afxwin.h | MFC core and standard components |
| assert.h | assert |
| conio.h | getch, putch |
| ctype.h | isUpper, isLower, toUpper |
| direct.h | chdir, mkdir |
| dos.h | DOS API |
| fcntl.h | open flags: O_RDONLY, _O_CREAT, _O_EXCL |
| io.h | _chsize, _chmod, _lseek |
| jni.h | Java JNI library |
| mmsystem.h | playsound |
| process.h | exec, spawn |
| resource.h | generated to include resources |
| share.h | sharing flags: _SH_DENYRW, _SH_DENYWR, _SH_DENYRD, _SH_DENYNO, _SH_SECURE |
| stdafx.h | standard precompiled header |
| stdio.h | fclose, fgetc, printf, remove, rename, setvbuf |
| stdlib.h | exit, putenv, splitpath |
| string.h | strcpy, strcat, strcmp, strupr |
| sys\stat.h | read/write permissions: _S_IREAD, _S_IWRITE |
| tchar.h | 16-bit chars, TCHAR |
| winbase.h | time structures: _FILETIME, _SYSTEMTIME |
| windows.h | Windows API |
| Microsoft C++ Express cl.exe Command Line Options | ||
|---|---|---|
| Debug | Release | Notes |
| /Od | /O2 | debug or optimise for speed |
| /Oi | intrinsic functions | |
| /GL | link time optimisation | |
| /D "WIN32" | /D "WIN32" | 32-bit windows app |
| /D "_DEBUG" | /D "NDEBUG" | debugging on not |
| /D "_CONSOLE" | /D "_CONSOLE" | command line, console app |
| /D "_UNICODE" | /D "_UNICODE" | no multibyte sequences |
| /D "UNICODE" | /D "UNICODE" | no multibyte sequence |
| /EHsc | /EHsc | Enable C++ exceptions |
| /RTC1 | run time checks | |
| /MTd | /MT | multi-thread library |
| /Gy | function level linking | |
| /Fo"Debug\\" | /Fo"Release\\" | where to put the object modules |
| /Fd"Debug\vc90.pdb" | /Fd"Release\vc90.pdb" | Program database |
| /W3 | /W3 | warning level |
| /Y- | /Y- | inhibit precompiled headers |
| /nologo | /nologo | no startup banner |
| /c | /c | compile without linking |
| /Zi | Debug format | |
| /TP | /TP | compile as C++ |
| /errorReport:prompt | /errorReport:prompt | prompt immediately |
| Microsoft Link link.exe Command Line Options | ||
|---|---|---|
| Debug | Release | Notes |
| /OUT:"E:\com\mindprod\splice\Debug\splice.exe" | /OUT:"E:\com\mindprod\splice\Release\splice.exe" | where exe file is generated |
| /INCREMENTAL:NO | /INCREMENTAL:NO | no incremental linking |
| /NOLOGO | /NOLOGO | no startup banner |
| /MANIFEST:NO | /MANIFEST:NO | no manifest |
| /DEBUG | debug or release | |
| /PDB:"E:\com\mindprod\splice\Debug\splice.pdb" | Program database | |
| /SUBSYSTEM:CONSOLE | /SUBSYSTEM:CONSOLE | command line console app |
| /OPT:REF | optimise by removing unreferenced code | |
| /OPT:ICF | optimise by removing rendundant ICFs | |
| /LTCG | link time code generation | |
| /DYNAMICBASE | /DYNAMICBASE | randomised image base |
| /NXCOMPAT | /NXCOMPAT | DEP compatible |
| /MACHINE:X86 | /MACHINE:X86 | Windows hardware |
| /ERRORREPORT:PROMPT | /ERRORREPORT:PROMPT | display errors immediately |
| kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib | kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib | libraries |
/FD means incremental rebuild. It is not a real command line option. You can safely delete compiler intermediate files: *.aps *.ilk *.ncb *.pbd *.pch. You must keep the *.sln *.vcproj *.user.
For command line use, you also need SET environment variables to help the compiler find the include libraries and the linker find the object libraries.
![]() |
recommend book⇒C++ For Java Programmers | |
| paperback | ||
|---|---|---|
| ISBN13: | 978-0-201-61246-2 | |
| publisher: | Addison Wesley | |
| published: | 1999-04-02 | |
| by: | Mark Allen Weiss | |
| This is the same title as Mark Weiss’s book. Note the direction. Most books presume you know C++ and need to learn Java. This one presumes you know Java and need to learn or brush up on C++ for doing JNI or related work. | ||
![]() |
recommend book⇒C++ For Java Programmers | |
| hardcover | ||
|---|---|---|
| ISBN13: | 978-0-13-919424-5 | |
| publisher: | Prentice Hall | |
| published: | 2003-11-07 | |
| by: | Timothy A. Budd | |
| This is the same title as Timothy Budd’s book. Note the direction. ost books presume you know C++ and need to learn Java. This one presumes you know Java and need to learn or brush up on C++ for doing JNI or related work. | ||
![]() |
recommend book⇒Beginning Visual C++ 6 | |
| paperback | ||
|---|---|---|
| ISBN13: | 978-1-86100-088-0 | |
| publisher: | Wrox Press | |
| published: | 1998-08 | |
| by: | Ivor Horton | |
| A gentle, easy-paced introduction to C++. | ||
![]() |
recommend book⇒Accelerated C++: Practical Programming by Example | |
| paperback | ||
|---|---|---|
| ISBN13: | 978-0-201-70353-5 | |
| publisher: | Addison-Wesley | |
| published: | 2000-08-24 | |
| by: | Andrew Koenig, Barbara E. Moo | |
| Recommended for people who know Java and want to learn C++. | ||
![]() |
recommend book⇒The Design and Evolution of C++ | |
| paperback | ||
|---|---|---|
| ISBN13: | 978-0-201-54330-8 | |
| publisher: | Addison-Wesley | |
| published: | 1994-04-08 | |
| by: | Bjarne Stroustrup | |
| This is a fascinating book about the birth of a new computer language C++. He talks about the politics, the compromises, and the factors that made him design C++ the way it is. | ||
![]() |
recommend book⇒The C++ Programming Language (3rd Edition) | ||
| paperback | hardcover | ||
|---|---|---|---|
| ISBN13: | 978-0-201-88954-3 | 978-0-201-70073-2 | |
| publisher: | Addison-Wesley | ||
| published: | 1997-06-30 | ||
| by: | Bjarne Stroustrup | ||
| A reference manual for C++, rather formal. | |||
![]() |
recommend book⇒The Annotated C++ Reference Manual | |
| paperback | ||
|---|---|---|
| ISBN13: | 978-0-201-51459-9 | |
| publisher: | Addison-Wesley | |
| published: | 1990-01-11 | |
| by: | Margaret A. Ellis, Bjarne Stroustrup | |
| A book for language lawyers on the fine points of C++. It is not suitable for initially learning the language. It is really more aimed at compiler writers. It covers C++ implementation techniques including vtbls. | ||
![]() |
recommend book⇒Java Programming: Making the Move from C++ | |
| paperback | ||
|---|---|---|
| ISBN13: | 978-1-85032-922-0 | |
| publisher: | International Thomson Computer Press | |
| published: | 1998-07-21 | |
| by: | Joe Wigglesworth and Paula Lumby | |
| Does not discuss anything past Java 1.1. | ||
| You can get the freshest copy of this page from: | or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror) | |
| http://mindprod.com/jgloss/cpp.html | J:\mindprod\jgloss\cpp.html | |
![]() | ||
| Canadian Mind Products | ||
| mindprod.com IP:[65.110.21.43] | ||
| view Blog | Your face IP:[38.107.191.112] | |
| Feedback | You are visitor number 14,291. | |