Difference between revisions of "Programming:C++"

From WhyAskWhy.org Wiki
Jump to: navigation, search
m (Added section for ResEdit)
m (Worked on cleaning up the online resources links)
Line 7: Line 7:
  
 
= C++ Programming =
 
= C++ Programming =
//This page should receive a lot of attention over the next few weeks/months as I'm actively trying to learn this language.//
 
  
  
===== My Notes =====
+
 
 +
== My Notes ==
  
 
   * [[.:notes:references|References]]
 
   * [[.:notes:references|References]]
Line 16: Line 16:
 
   * [[.:notes:start|...more...]]
 
   * [[.:notes:start|...more...]]
  
===== Online Resources =====
+
== Online Resources ==
//Various resources in no particular order (I'll eventually organize them)//
+
''Various resources in no particular order (I'll eventually organize them)''
 +
 
 +
=== Tutorials/Free Books ===
 +
 
 +
* [http://www.cprogramming.com/tutorial.html CProgramming.com - Programming Tutorials]
 +
* [http://pcgameprogramming.wordpress.com/ pcgameprogramming.wordpress.com] - One person's web log about learning game programming from scratch.
 +
* [[wikibooks:C%2B%2B_Programming|Wikibooks C++ Programming]]
 +
* [http://www.learncpp.com/ LearnCpp.com] - Free website devoted to teaching you to program in C++.
 +
 
 +
=== References ===
 +
 
 +
* [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.faqs.org/faqs/C++-faq/ C++ FAQ index from faqs.org]
 +
* [http://www.cs.wustl.edu/~schmidt/C++/ C++ Programming Language Tutorials]]
 +
* [http://cppreference.com/ C++ Reference]
 +
 
 +
=== Misc ===
 +
 
 +
* [http://www.research.att.com/~bs/C++.html The C++ Programming Language] - The original author's C++ page.
 +
 
 +
* [http://www.cantrip.org/realworld.html C++ in the Real World: Advice from the Trenches]
 +
* [http://www.deitel.com/ResourceCenters/Programming/CPlusPlus/tabid/224/Default.aspx Deitel C++ Programming Resource Center]]
 +
* [http://nothings.org/computer/cpp.html  One reason C++ sucks compared to C] <ref>It's always interesting to hear opposing points of view</ref>
 +
* [http://www.boost.org/ Boost, free peer-reviewed portable C++ source libraries.]
 +
* [http://msdn.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx C/C++ Runtime Libraries - MSDN, VS2005]
 +
 
 +
* [http://www.gamedev.net/ gamedev.net - Tutorials, Forums]
 +
* [http://www.dreamincode.net/forums/showforum15.htm dreamincode.net - Tutorials, Forums]
 +
* [http://www.holub.com/goodies/rules.html Holub Associates - C++ Rules of thumb] <ref>From the table of contents in [http://www.amazon.com/dp/0070296898/ Enough Rope to Shoot Yourself in the Foot]</ref>
 +
** [http://www.cookconsulting.com/Software/holubcpp.jsp Mirrored list]
 +
* [http://www.thefreecountry.com/ Free Programmers', Webmasters' and Security Resources] - HUGE collection of info
 +
* [http://www.scribd.com/search?query=tags%3Ac%2B%2B scribd.com documents tagged with C++]]
 +
** [http://www.scribd.com/doc/248985/cpp-notes scriptd.com - C++ Notes]
 +
* [http://www.cpp-home.com/ C++ Home] <ref>That's the name of the site, [[wikipedia:Bjarne_Stroustrup|Bjarne Stroustrup]] is the original creator of C++ - Good FAQs listed here.</ref>
 +
* [http://www.accu-usa.org/2003-01.html Tech Talk - A Use for stringstreams]
 +
* [http://www.artima.com/cppsource The C++ Source, online journal for C++ Community]
 +
* [http://www.icce.rug.nl/documents/cplusplus/ The C++ Annotations]
 +
* [http://www.java2s.com/Tutorial/Cpp/CatalogCpp.htm java2s.com - C++ Tutorial]
 +
* [http://www.intelligentedu.com/ intelligentedu.com] <ref>Blogs which link to programming resources (College lectures, books).  Looks very good.</ref>
 +
* [http://www.koders.com/ koders.com - Open Source Code Search Engine]
 +
* [http://www.codeproject.com/ codeproject.com - Articles, Code, Message Boards]]
 +
* [http://www.apitalk.com/index.php apitalk.com] - Resource center and source code repository (has useful articles)
 +
* [http://www.codeguru.com/|codeguru.com]] - Lots of articles and occasionally book excerpts
 +
* [http://www.possibility.com/Cpp/CppCodingStandard.html C++ Coding Standard]
 +
* [http://www.eventhelix.com/RealtimeMantra/Object_Oriented/design_by_contract.htm Design by Contract Programming in C++]
 +
* [http://developer.kde.org/~wheeler/cpp-pitfalls.html C++ Pitfalls]
 +
* [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.research.att.com/~bs/C++.html|The C++ Programming Language]] - The original author's C++ page.
+
<references />
  * [[wb>C%2B%2B_Programming|Wikibooks C++ Programming]]
 
  * [[http://www.cantrip.org/realworld.html|C++ in the Real World: Advice from the Trenches]]
 
  * [[http://www.deitel.com/ResourceCenters/Programming/CPlusPlus/tabid/224/Default.aspx|Deitel C++ Programming Resource Center]]
 
  * [[http://nothings.org/computer/cpp.html| One reason C++ sucks compared to C]] ((It's always interesting to hear opposing points of view))
 
  * [[http://www.boost.org/|Boost, free peer-reviewed portable C++ source libraries.]]
 
  * [[http://www.deitel.com/ResourceCenters/Programming/CPlusPlus/tabid/224/Default.aspx|Deitel's C++ Resource Center]]
 
  * [[http://msdn.microsoft.com/en-us/library/abx4dbyh(VS.80).aspx|C/C++ Runtime Libraries - MSDN, VS2005]]
 
  * [[http://www.cprogramming.com/tutorial.html|CProgramming.com - Programming Tutorials]]
 
  * [[http://www.gamedev.net/|gamedev.net - Tutorials, Forums]]
 
  * [[http://www.dreamincode.net/forums/showforum15.htm|dreamincode.net - Tutorials, Forums]]
 
  * [[http://www.holub.com/goodies/rules.html|Holub Associates - C++ Rules of thumb]] from the table of contents in //[[amazon>0070296898|Enough Rope to Shoot Yourself in the Foot]]//
 
      * [[http://www.cookconsulting.com/Software/holubcpp.jsp|Mirrored list]]
 
  * [[http://www.thefreecountry.com/|Free Programmers', Webmasters' and Security Resources]]((HUGE collection of info))
 
  * [[http://www.scribd.com/search?query=tags%3Ac%2B%2B|scribd.com documents tagged with C++]].  Ex: [[http://www.scribd.com/doc/248985/cpp-notes|cpp-notes]]
 
  * [[http://www.cpp-home.com/|C++ Home]]((That's the name of the site, [[wp>Bjarne_Stroustrup|Bjarne Stroustrup]] is the original creator of C++)) - Good FAQs listed here.
 
  * [[http://www.parashift.com/c++-faq-lite/|C++ FAQ LITE — Frequently Asked Questions]]
 
  * [[http://www.faqs.org/faqs/C++-faq/|C++ FAQ index from faqs.org]]
 
  * [[http://www.cs.wustl.edu/~schmidt/C++/|C++ Programming Language Tutorials]]
 
  * [[http://www.accu-usa.org/2003-01.html|Tech Talk - A Use for stringstreams]]
 
  * [[http://www.artima.com/cppsource|The C++ Source, online journal for C++ Community]]
 
  * [[http://www.icce.rug.nl/documents/cplusplus/|The C++ Annotations]]
 
  * [[http://www.java2s.com/Tutorial/Cpp/CatalogCpp.htm|java2s.com - C++ Tutorial]]
 
  * [[http://www.intelligentedu.com/|intelligentedu.com]] - Blogs which link to programming resources (College lectures, books).  Looks very good.
 
  * [[http://www.koders.com/|koders.com - Open Source Code Search Engine]]
 
  * [[http://pcgameprogramming.wordpress.com/|pcgameprogramming.wordpress.com]] One person's web log about learning game programming from scratch.
 
  * [[http://cppreference.com/|C++ Reference]]
 
  * [[http://www.codeproject.com/|codeproject.com - Articles, Code, Message Boards]]
 
  * [[http://www.learncpp.com/|LearnCpp.com]] is a totally free website devoted to teaching you to program in C++.
 
  * [[http://www.apitalk.com/index.php|apitalk.com]] - Resource center and source code repository (has useful articles)
 
  * [[http://www.codeguru.com/|codeguru.com]] - Lots of articles and occasionally book excerpts
 
  * [[http://www.possibility.com/Cpp/CppCodingStandard.html|C++ Coding Standard]]
 
  * [[http://www.eventhelix.com/RealtimeMantra/Object_Oriented/design_by_contract.htm|Design by Contract Programming in C++]]
 
  * [[http://developer.kde.org/~wheeler/cpp-pitfalls.html|C++ Pitfalls]]
 
  * [[http://www.relisoft.com/cpp.html|relisoft.com - C++ Resources page]]((Looks to be *very* useful.))
 
  * [[http://www.cplusplus.com/|cplusplus.com - The C++ Resources Network]]((Their page title))
 
  * [[http://www.sourcepole.com/sources/programming/cpp/cppqref.html|C++ Quick Reference]]
 
  
 
==== OS Neutral ====
 
==== OS Neutral ====

Revision as of 08:00, 6 July 2012


C++ Programming

My Notes

 * References
 * const keyword
 * ...more...

Online Resources

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

Tutorials/Free Books

References

Misc


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

OS Neutral

CSV files

 * [to read data from csv file in an array and parse]
 * [Bose's C/C++ Software] ((CSV Parsing Class on this page))

INI files

 * [to Read Ini File]
 * [- ini reader (c++, any platform)]
 * [- INI-file reader]

Windows specific

 * [Data Types]

DLLs

 * [C++ classes without using MFC extension DLL]

Active Directory

 * [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 ...

 * [Manipulation Classes]
 * [XP: Limiting sound in Windows XP Pro]
 * [Mixer Functions Demo]
 * [Media Player Standby Plug-in]((Handles sound levels also))
 * [Player using winmm.dll and WPL file]

but this article gave me what i was looking for:

 * [[2]]

Of interest is [[3]] forum posting:

>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.


APIs

    • Multimedia Functions**
 * [Mixer Functions]
 * [Functions]

I won't need these however:

 * [[4]]
 * [[5]]
 * [[6]]
 * [[7]]
 

Note sure about this one:

 * [CD player volume]

LDAP

 * [MSDN - Lightweight Directory Access Protocol]

Keyboard/Mouse

 * [Windows Desktop] (keyboard hook)

Registry

 * [Registry I/O]
 * [Registry Settings]
 * [- How to read values of the system's registry]
 * [Operations using Win32]
 * [with the Windows Registry in C++]
 * [- get registry value]

APIs

 * [[8]]
 * [[9]]

Forums

 * [Community bytes - C++]
 * [- C/C++ Message board]
 * [Technica Programmer's Symposium]
Books

Current

//I'm using these books to teach myself//

 * [[amazon>0470014687|You Can Program in C++: A Programmer's Introduction]]
   * [Material]
   * [page]
 * [[amazon>0470863986|You Can Do It!: A Beginners Introduction to Computer Programming]]
   * [Support]
   * [site]
   * YCDI notes
 * [[amazon>0131857576|C++ How to Program (5th Edition)]]
   * [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]]
   * [Support]

Queued

//I haven't been using these lately, but in the future I'll make (more) use of them//((I finally learned my lesson that buying more books on a subject doesn't exactly equal greater knowledge on the subject.  :-P))

 * [[amazon>0764574841|Professional C++ (Programmer to Programmer)]]
   * [Support]
 * [[amazon>0321321928|C++ Common Knowledge: Essential Intermediate Programming]]
   * [[informit>0321321928|Extras, Sample Content]]
   * [website]
 * [[amazon>0766846822|Jamsa's C/C++/C# Programmer's Bible]] ((This book was issued before the C++03 update to the [14882] standard and doesn't follow current conventions. For example it uses #include <iostream.h> instead of: #include <iostream> 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]]
   * [Support]
   * [website]
   * [[10]] ((I haven't taken the time to review this yet.))
 * [[amazon>020170353X|Accelerated C++]]
   * [for the book] (errata, etc.)
 * [[amazon>0201379260|The C++ Standard Library - A Tutorial and Reference]]
   * [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]]
     * [in C++ Electronic books page] ((Warning, some links are broken))
     * [- 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]]
   * [site] (errata, forums, etc.)
IDEs and Compilers

//The descriptions are borrowed from the tool websites//

 * [[11]] 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. 
 * [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 [more].
 * [[12]] 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++.))
 * [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.(([Wikipedia.org entry]))
   * [Visual C++ 2005 Express Edition with the Microsoft Platform SDK]
   * [libraries with Visual Studio 2005 Express]

Compiler lists

 * [Win32 C/C++ Compilers Page]
 * [- Free C/C++ Compilers and Interpreters]
Cool tools

Windows specific

 * [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.
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 here and here.


  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1
ResEdit

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).

http://www.resedit.net/