Difference between revisions of "Programming:C++"

From WhyAskWhy.org Wiki
Jump to: navigation, search
m (Removed redundant title)
m (Placed list of C++ on their own subpage and left the Francis Glassborow titles here since I mentioned them recently on my blog and linked to this page.)
 
(23 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
[[Category:NeedsCleanup]]
 
[[Category:NeedsCleanup]]
  
 +
{{WorkInProgress}}
  
== My Notes ==
+
== Subpages ==
  
  * [[.:notes:references|References]]
+
{{Special:PrefixIndex/Programming:C++/}}
  * [[.:notes:const|const keyword]]
 
  * [[.:notes:start|...more...]]
 
  
== Online Resources ==
+
 
 +
 
 +
== Resources ==
 
''Various resources in no particular order (I'll eventually organize them)''
 
''Various resources in no particular order (I'll eventually organize them)''
 +
 +
 +
=== Videos ===
 +
 +
''I haven't watched all of these, so I'm not necessarily endorsing any of them''
 +
 +
* [http://xoax.net/ XoaX.net] - Misc videos ranging from C++ to Neural Networks
 +
* [http://thenewboston.org/ thenewboston] - website dedicated to providing free, quality tutorial videos on a broad range of subjects
 +
* [http://www.programmingvideotutorials.com/ Programming Video Tutorials (PVT)] - Covers many popular programming languages through both text and video tutorials.
 +
  
 
=== Tutorials/Free Books ===
 
=== Tutorials/Free Books ===
Line 24: Line 35:
 
=== References ===
 
=== References ===
  
 +
* [http://cplusplus.com/reference/ Cplusplus.com - Reference section] <ref>I couldn't recommend their reference section enough</ref>
 
* [http://www.sourcepole.com/sources/programming/cpp/cppqref.htm C++ Quick Reference]
 
* [http://www.sourcepole.com/sources/programming/cpp/cppqref.htm C++ Quick Reference]
 
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ LITE — Frequently Asked Questions]
 
* [http://www.parashift.com/c++-faq-lite/ C++ FAQ LITE — Frequently Asked Questions]
Line 29: Line 41:
 
* [http://www.cs.wustl.edu/~schmidt/C++/ C++ Programming Language Tutorials]]
 
* [http://www.cs.wustl.edu/~schmidt/C++/ C++ Programming Language Tutorials]]
 
* [http://cppreference.com/ C++ Reference]
 
* [http://cppreference.com/ C++ Reference]
 +
* [http://www.informit.com/guides/guide.aspx?g=cplusplus InformIT C++ Reference Guide]
  
 
=== Misc ===
 
=== Misc ===
Line 62: Line 75:
 
* [http://www.relisoft.com/cpp.html relisoft.com - C++ Resources page] <ref>Looks to be *very* useful.</ref>
 
* [http://www.relisoft.com/cpp.html relisoft.com - C++ Resources page] <ref>Looks to be *very* useful.</ref>
 
* [http://www.cplusplus.com/ cplusplus.com - The C++ Resources Network]
 
* [http://www.cplusplus.com/ cplusplus.com - The C++ Resources Network]
 +
 +
<references />
  
  
Line 67: Line 82:
  
 
==== CSV files ====
 
==== CSV files ====
  * [[http://www.daniweb.com/forums/thread50051.html|How to read data from csv file in an array and parse]]
+
* [http://www.daniweb.com/forums/thread50051.html How to read data from csv file in an array and parse]
  * [[http://www.mayukhbose.com/freebies/c-code.php|Mayukh Bose's C/C++ Software]] ((CSV Parsing Class on this page))
+
* [http://www.mayukhbose.com/freebies/c-code.php Mayukh Bose's C/C++ Software]
  
 
==== INI files ====
 
==== INI files ====
  * [[http://www.codeproject.com/KB/cpp/IniReader.aspx|class to Read Ini File]]
+
* [http://www.codeproject.com/KB/cpp/IniReader.aspx class to Read Ini File]
  * [[http://www.gamedev.net/community/forums/topic.asp?topic_id=405783|gamedev.net - ini reader (c++, any platform)]]
+
* [http://www.gamedev.net/community/forums/topic.asp?topic_id=405783 gamedev.net - ini reader (c++, any platform)]
  * [[http://www.programmingforums.org/thread5323.html|programmingforums.org - INI-file reader]]
+
* [http://www.programmingforums.org/thread5323.html programmingforums.org - INI-file reader]
  
<references />
 
  
  
 
=== Windows specific ===
 
=== Windows specific ===
  
  * [[http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx|Windows Data Types]]
+
I've logged Windows-specific notes [[Programming:C%2B%2B/Windows_Specific|here]]
  
==== DLLs ====
+
== Forums ==
 
 
  * [[http://www.codeproject.com/KB/DLL/noextensiondll.aspx|Exporting C++ classes without using MFC extension DLL]]
 
 
 
==== Active Directory ====
 
  * [[http://www.tek-tips.com/viewthread.cfm?qid=1061034&page=11|Getting attributes of a user out of active directory]]
 
 
 
==== Audio ====
 
I am hoping to create a volume limiter for use at work and after some light research I'll use WinAPI functions from the **Winmm** library.
 
 
 
 
 
I had looked at these for ideas ...
 
 
 
* [http://www.codeproject.com/KB/audio-video/volumeclasses.aspx Volume Manipulation Classes]
 
* [http://forums.cnet.com/5208-6142_102-0.html?forumID=5&threadID=146586&messageID=1641309&tag=forums06;posts#1641309 Windows XP: Limiting sound in Windows XP Pro]
 
* [http://www.codeproject.com/KB/audio-video/admixer.aspx Audio Mixer Functions Demo]
 
* [http://www.codeproject.com/KB/cpp/Mpst.aspx Windows Media Player Standby Plug-in] <ref>Handles sound levels also</ref>
 
* [http://www.codeproject.com/KB/cs/Audio_Player__with_Winmm.aspx Audio Player using winmm.dll and WPL file]
 
 
 
but this article gave me what i was looking for:
 
 
 
* [http://www.codeproject.com/KB/audio-video/mixerSetControlDetails.aspx mixerSetControlDetails]
 
 
 
Of interest is  [http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-clr/1995/Access-violation-when-using-c-cli this] forum posting:
 
 
 
<blockquote>To workaround this issue, do not link your application with WINMM, but instead use LoadLibrary to import the function at runtime. An application does this by calling the LoadLibrary function to load the DLL and then calling the GetProcAddress function to retrieve the address of the required function. The application should check the values returned from LoadLibrary and from GetProcAddress to ensure that these functions succeed. If the DLL is not found or does not export the desired function, one of these calls fails, and the application can handle the error gracefully.</blockquote>
 
 
 
===== APIs =====
 
 
 
====== Multimedia Functions ======
 
 
 
* [http://msdn.microsoft.com/en-us/library/ms705727(VS.85).aspx Audio Mixer Functions]
 
* [http://msdn.microsoft.com/en-us/library/ms713505(VS.85).aspx Waveform Functions]
 
 
 
I won't need these however:
 
 
 
* <strike>[http://msdn.microsoft.com/en-us/library/ms706247(VS.85).aspx auxSetVolume]</strike>
 
* <strike>[http://msdn.microsoft.com/en-us/library/ms706237(VS.85).aspx auxGetVolume]</strike>
 
* <strike>[http://msdn.microsoft.com/en-us/library/ms706235(VS.85).aspx auxGetNumDevs]</strike>
 
* <strike>[http://msdn.microsoft.com/en-us/library/ms706230(VS.85).aspx AUXCAPS]</strike>
 
 
 
Note sure about this one:
 
 
 
* [http://www.edm2.com/0511/cdplayer3.html Setting CD player volume]
 
 
 
==== LDAP ====
 
 
 
  * [[http://msdn.microsoft.com/en-us/library/aa367008.aspx| MSDN - Lightweight Directory Access Protocol]]
 
 
 
==== Keyboard/Mouse ====
 
 
 
  * [[http://www.codeproject.com/KB/winsdk/AntonioWinLock.aspx|Lock Windows Desktop]] (keyboard hook)
 
 
 
==== Registry ====
 
 
 
  * [[http://www.codeproject.com/KB/system/simple_registry.aspx|Simple Registry I/O]]
 
  * [[http://www.codeproject.com/KB/winsdk/CommonRegSettings.aspx|Common Registry Settings]]
 
  * [[http://www.tek-tips.com/faqs.cfm?fid=4858|tek-tips.com - How to read values of the system's registry]]
 
  * [[http://www.codersource.net/win32_registry_operations.html|Registry Operations using Win32]]
 
  * [[http://www.aspfree.com/c/a/Windows-Scripting/Working-with-the-Windows-Registry-in-C-plus-plus/|Working with the Windows Registry in C++]]
 
  * [[http://www.programmersheaven.com/mb/Win32API/374677/374677/-get-registry-value/|programmersheaven.com - get registry value]]
 
 
 
===== APIs =====
 
 
 
  * [[http://msdn.microsoft.com/en-us/library/ms724895(VS.85).aspx|RegOpenKey]]
 
  * [[http://msdn.microsoft.com/en-us/library/ms724911(VS.85).aspx|RegQueryValueEx]]
 
  
== Forums ==
+
* [http://www.cprogramming.com/board.html cprogramming.com - C/C++ Message board] (I frequent this one a lot)
 +
* [http://cplusplus.com/forum/ C++ Forum]
 +
* [http://bytes.com/forum/forum129.html IT Community bytes - C++]
 +
* [http://episteme.arstechnica.com/eve/forums/a/frm/f/6330927813 Ars Technica Programmer's Symposium]
  
  * [[http://bytes.com/forum/forum129.html|IT Community bytes - C++]]
 
  * [[http://www.cprogramming.com/board.html|cprogramming.com - C/C++ Message board]]
 
  * [[http://episteme.arstechnica.com/eve/forums/a/frm/f/6330927813|Ars Technica Programmer's Symposium]]
 
  
 
== Books ==
 
== Books ==
  
=== Current ===
+
''Misc books I'm working through while learning C++''
 
 
  * [[amazon>0470014687|You Can Program in C++: A Programmer's Introduction]]
 
    * [[http://www.wiley.com/legacy/wileychi/glassborowc++/material.html|Supplementary Material]]
 
    * [[http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470014687.html|Publisher's page]]
 
 
 
  * [[amazon>0470863986|You Can Do It!: A Beginners Introduction to Computer Programming]]
 
    * [[http://www.spellen.org/youcandoit/index.htm|Errata, Support]]
 
    * [[http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470863986.html|Publisher's site]]
 
    * [[.:books:ycdi|YCDI notes]]
 
 
 
  * [[amazon>0131857576|C++ How to Program (5th Edition)]]
 
    * [[http://www.deitel.com/Books/CPlusPlus/CPlusPlusHowtoProgram5e/tabid/1710/Default.aspx|Eratta, Support]]
 
 
 
  * [[amazon>0672326973|C++ Primer Plus (5th Edition, 2nd printing)]]
 
    * [[informit>0672326973|Downloads, Samples, Extra Content]]
 
 
 
  * [[amazon>0764571974|Ivor Horton's Beginning Visual C++ 2005]]
 
    * [[http://www.wrox.com/WileyCDA/WroxTitle/Ivor-Horton-s-Beginning-Visual-C-2005.productCd-0764571974,descCd-ERRATA.html|Errata, Support]]
 
 
 
=== Queued ===
 
 
 
  * [[amazon>0764574841|Professional C++ (Programmer to Programmer)]]
 
    * [[http://www.wrox.com/WileyCDA/WroxTitle/Professional-C-.productCd-0764574841.html|Eratta, Support]]
 
 
 
  * [[amazon>0321321928|C++ Common Knowledge: Essential Intermediate Programming]]
 
    * [[informit>0321321928|Extras, Sample Content]]
 
    * [[http://www.semantics.org/|Author's website]]
 
 
 
  * [[amazon>0766846822|Jamsa's C/C++/C# Programmer's Bible]] ((This book was issued before the C++03 update to the [[http://en.wikipedia.org/wiki/ISO/IEC_14882|ISO/IEC 14882]] standard and doesn't follow current conventions. For example it uses <code cpp>#include <iostream.h></code> instead of: <code cpp>#include <iostream></code> Sadly enough it also isn't listed on the publisher's site and I can't find any other mention of errata for it.))
 
 
 
  * [[amazon>1886411956|How Not to Program in C++: 111 Broken Programs and 3 Working Ones, or Why Does 2+2=5986]]
 
    * [[http://nostarch.com/hownotc.htm|Eratta, Support]]
 
    * [[http://www.oualline.com/|Author's website]]
 
    * [[http://gazonk.org/~eloj/books-2005.html|Review]] ((I haven't taken the time to review this yet.))
 
 
 
  * [[amazon>020170353X|Accelerated C++]]
 
    * [[http://www.acceleratedcpp.com/|Website for the book]] (errata, etc.)
 
 
 
  * [[amazon>0201379260|The C++ Standard Library - A Tutorial and Reference]]
 
    * [[http://www.josuttis.com/libbook/|Website for the book]] (errata, etc.)
 
 
 
  * [[amazon>9780596004965|C++ Pocket Reference]]((lots of errata :())
 
    * [[or>9780596004965|Errata, PDF purchase, etc]] @ O'Reilly Media
 
 
 
    * Thinking in C++
 
      * [[amazon>0139798099|Thinking in C++, Volume One: Introduction to Standard C++ (2nd Edition)]]
 
      * [[amazon>0130353132|Thinking in C++, Volume Two: Practical Programming]]
 
      * [[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html|Thinking in C++ Electronic books page]] ((Warning, some links are broken))
 
      * [[http://www.planetpdf.com/developer/article.asp?ContentID=6634|planetpdf.com - PDF copies of these books]]
 
 
 
=== Maybe ===
 
 
 
  * Introduction to 3D Game Programming with  [[amazon>1556229135|Direct X 9]], [[amazon>1598220160|Direct X 9.0c]], [[amazon>1598220535|Direct 3D 10]]
 
    * [[http://www.d3dcoder.net/|Author's site]] (errata, forums, etc.)
 
 
 
== IDEs and Compilers ==
 
//The descriptions are borrowed from the tool websites//
 
 
 
  * [[http://www.delorie.com/djgpp/|DJGPP]] is a complete 32-bit C/C++ development system for Intel 80386 (and higher) PCs running DOS. It includes ports of many GNU development utilities. The development tools require a 80386 or newer computer to run, as do the programs they produce. In most cases, the programs it produces can be sold commercially without license or royalties.
 
 
 
  * [[http://www.digitalmars.com/|Digital Mars C and C++ Compilers]] for Win32, Win16, DOS32 and DOS. Fastest compile/link times, powerful optimization technology, Design by Contract, complete library source, HTML browsable documentation, disassembler, librarian, resource compiler, make, etc., command line and GUI versions, tutorials, sample code, online updates, Standard Template Library, and [[http://www.digitalmars.com/features.html|much more]].
 
 
 
  * [[http://www.mingw.org/|MinGW]] A collection of freely available and freely distributable Windows specific header files and import libraries, augmenting the GNU Compiler Collection, (GCC), and its associated tools, (GNU binutils). MinGW provides a complete Open Source programming tool set which is suitable for the development of native Windows programs that do not depend on any 3rd-party C runtime DLLs.((This is what I'm using to learn C++.))
 
 
 
  * [[http://www.microsoft.com/express/vc/| Microsoft Visual C++ Express]] can build both native and managed applications. Included is the Windows Platform SDK which can build applications that use the Win32 API. Applications utilizing either MFC or ATL require the Standard Edition or higher, and will not compile with the Express Edition.(([[http://en.wikipedia.org/wiki/Microsoft_Visual_Studio_Express|From Wikipedia.org entry]]))
 
    * [[http://www.microsoft.com/express/2005/platformsdk/default.aspx|Using Visual C++ 2005 Express Edition with the Microsoft Platform SDK]]
 
    * [[http://www.learncpp.com/cpp-tutorial/a2-using-libraries-with-visual-studio-2005-express/|Using libraries with Visual Studio 2005 Express]]
 
 
 
=== Visual Studio 2010 ===
 
 
 
==== Specific Installation/Patch Order ====
 
 
 
FIXME: Fix the heading level here. I just went with the same as the previous one for simplicity.
 
 
 
During the installation of Visual Studio 2010 SP1, the Visual C++ compilers and libraries may have been removed. In order to prevent this, Microsoft Visual Studio 2010, Microsoft Windows SDK for Windows 7 and .NET Framework 4 (Windows SDK 7.1) and Visual Studio 2010 SP1 must be installed in a certain order. More info [http://www.microsoft.com/en-us/download/details.aspx?id=4422 here] and [http://download.microsoft.com/download/7/5/0/75040801-126C-4591-BCE4-4CD1FD1499AA/readme.htm here].
 
 
 
  
# [http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express-iso Visual Studio 2010]
+
=== Collection ===
# [http://www.microsoft.com/en-us/download/details.aspx?id=8279 Windows SDK 7.1]
 
# [http://www.microsoft.com/en-us/download/details.aspx?id=23691 Visual Studio 2010 SP1]
 
# [http://www.microsoft.com/en-us/download/details.aspx?id=4422 Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1]
 
  
 +
''I really haven't found a good way to list/catalog them yet, so I'm still experimenting with where to place them''
  
=== Compiler lists ===
+
* [[Programming:C++/Books|List of books]] and links to errata, notes and extra downloads.
 +
* Our [[Books:EBooks/Collection|ebooks collection page]].
  
  * [[http://www.willus.com/ccomp.shtml?p11|Willus.com's Win32 C/C++ Compilers Page]]
 
  * [[http://www.thefreecountry.com/compilers/cpp.shtml|thefreecountry.com  - Free C/C++ Compilers and Interpreters]]
 
  
===== Cool tools =====
+
=== Featured ===
  
==== Dependency Walker ====
+
==== You Can Do It!: A Beginners Introduction to Computer Programming ====
  
* [[http://www.dependencywalker.com/|Dependency Walker]] is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules.
+
* [[Programming:C++/Books/You_Can_Do_It!:_A_Beginners_Introduction_to_Computer_Programming|My notes (building the library, MinGW, Quincy, etc)]]
 +
* [http://www.spellen.org/youcandoit/index.htm Official Errata list, Support]
 +
* [http://www.wiley.com/legacy/wileychi/glassborowc++/material.html Supplementary Material on the Publisher's site]
 +
* [http://code.google.com/p/youcandoit/downloads/list Library compiled for Visual Studio 2008 use]
 +
* ISBN 0470863986
  
==== ResEdit ====
 
  
<blockquote>ResEdit is a resource editor for Windows programs. The original purpose was to help C++ developers to create resource scripts. Now it can also be used to modify any resource in PE files (exe, dll, ...) and compiled resource scripts (res files).</blockquote>
+
==== You Can Program in C++: A Programmer's Introduction ====
  
http://www.resedit.net/
+
* [http://www.wiley.com/legacy/wileychi/glassborowc++/material.html Supplementary Material on the Publisher's site]
 +
* [http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470014687.html Publisher's page]
 +
* [http://code.google.com/p/youcandoit/downloads/list Library compiled for Visual Studio 2008 use]
 +
* ISBN 0470014687

Latest revision as of 21:23, 16 July 2012




The following content is a Work In Progress and may contain broken links, incomplete directions or other errors. Once the initial work is complete this notice will be removed. Please contact me via Twitter with any questions and I'll try to help you out.


Subpages


Resources

Various resources in no particular order (I'll eventually organize them)


Videos

I haven't watched all of these, so I'm not necessarily endorsing any of them

  • XoaX.net - Misc videos ranging from C++ to Neural Networks
  • thenewboston - website dedicated to providing free, quality tutorial videos on a broad range of subjects
  • Programming Video Tutorials (PVT) - Covers many popular programming languages through both text and video tutorials.


Tutorials/Free Books

References

Misc

  1. I couldn't recommend their reference section enough
  2. It's always interesting to hear opposing points of view
  3. From the table of contents in Enough Rope to Shoot Yourself in the Foot
  4. That's the name of the site, Bjarne Stroustrup is the original creator of C++ - Good FAQs listed here.
  5. Blogs which link to programming resources (College lectures, books). Looks very good.
  6. Looks to be *very* useful.


OS Neutral

CSV files

INI files


Windows specific

I've logged Windows-specific notes here

Forums


Books

Misc books I'm working through while learning C++

Collection

I really haven't found a good way to list/catalog them yet, so I'm still experimenting with where to place them


Featured

You Can Do It!: A Beginners Introduction to Computer Programming


You Can Program in C++: A Programmer's Introduction