Language
C
- ISO/IEC 9899:TC3 Programming languages — C
- ISO/IEC 9899:201x Programming languages — C
- ANSI C Specification
- The C Library Reference Guide by Eric Huss
- C Library Reference
printf
functionwcstombs
function : Convert wide-character string to multibyte stringwcscat
function : Concatenate wide strings
- The C Book
- C Programming Tutorial
- C standard library (Wikipedia)
- C data types (Wikipedia)
- Wide character,
wchar_t
(Wikipedia)
- C project avoiding naming conflicts(Jun 20 '13)
- C library naming conventions(Jan 1 '10)
- Recursive Make Considered Harmful
- Why is abs(0x80000000) == 0x80000000?(Mar 29 '10)
- Include guard
- Multiple definition of a global variable(Jan 25 '13)
- What
extern
andstatic
mean ?
- What
- Effects of the extern keyword on C functions(May 13 '09)
- How do I use extern to share variables between source files in C? (Sep 16 '09)
- includes 'Best way to declare and define global variables' and 'Guidelines'
- In C++ source, what is the effect of
extern "C"
? (Jun 25 '09) - Get the length of
char
array orwchar_t
array at runtime - Efficient Compilation
- Understanding lvalues and rvalues in C and C++(December 15, 2011)
- Lvalues and Rvalues(MSDN)
- Pointer
- C pointer operator
&
: address operator,*
: indirection operator
- Programs as Data: Function Pointers
- What is a “callback” in C and how are they implemented?(Sep 27 '08)
- C pointer operator
- Concurrency
C++
- C++ Standard Library (Wikipedia)
- Standard Template Library (STL) (Wikipedia)
- provides four components called algorithms, containers, functional, and iterators.
- containers include
vector
,list
,deque
,set
,map
,hash_map
- GNU compiler toolchain (UNIX only)
- Microsoft compiler toolchain (Windows native)
- Library Reference of Wireshark Build Environment
- C++ dlopen mini HOWTO(2006-03-16)
- using
extern "C"
- using
- Header files(June 3rd, 2007)
cstdio
stdio.h
namespace (May 5 '12)- What do
__STDC_LIMIT_MACROS
and__STDC_CONSTANT_MACROS
mean? (Jun 12 '09) - Parameter-Passing Modes
- Value Parameters, Reference Parameters, vs. Const-Reference Parameters
- 'Passing arguments'/'Returning values' by reference, address, and value
- Passing arguments by reference(July 24th, 2007)
- Passing arguments by address(July 25th, 2007)
- Returning values by value, reference, and address(February 25th, 2008)
- Concatenate char arrays in C++(Jun 17 '14)
GCC
- The GNU C Reference Manual
- GNU C Library master sources
- GCC Predefined Macros
- GCC 5.1 Standard C++ Library API
- GCC 5.1 Standard C++ Library Manual
- GNU Coding Standards/Making The Best Use of C
- HOWTO Create and Deploy a Sample DLL using MinGW(November 20th, 2009)
- building C/C++ sources containing
__declspec(dllexport)
and__declspec(dllimport)
using MinGW
- building C/C++ sources containing
- How to suppress warnings about unused variables in C++?(Aug 6 '12)
- The
-Wno-__
options turn off the options set by-W__
.
- The
Visual C++
- Visual C++ Language Reference
- Fundamental Types
- Ranges of Integer Types
- Windows Data Types
LPBYTE
,LPVOID
,WCHAR
, ...
- Visual C++ Predefined Macros
- Visual C++ Function Reference(alphabetical list)
- Visual C++ Libraries Reference
- C++ Standard Library Reference
- MFC Reference
- MFC(Microsoft Foundation Class) : provides an object-oriented wrapper over much of the Win32 and COM APIs.
- AFX(Application Framework eXtensions) : an old name for MFC
- STL/CLR Library Reference
- STL/CLR Library : a packaging of the Standard Template Library (STL), a subset of the Standard C++ Library, for use with C++ and the .NET Framework common language runtime (CLR).
- ATL Reference
- ATL(Active Template Library) : a set of template-based C++ classes that simplify the programming of Component Object Model (COM) objects.
- File Types Created for Visual C++ Projects
- Visual C++ Building Reference
- Visual C++ LIB Reference
- Resource Compiler
- C Run-time Library(CLR) and Standard C++ Library
MSVCR100.DLL, MSVCP110.dll
, ...
- CRT Library Features (Visual Studio 2015)
- CRT Library Features (Visual Studio 2008)
- DLLs in Visual C++
- CRT Debugging Techniques
- Windows System Error Codes
- Visual C++ Deployment
- Choosing a Deployment Method
- Central deployment by using redistributable packages, Central deployment by using merge modules, Local deployment
- INF File Architecture
- INF Files
- Setup Information (.inf) Files
- Setup Information File (.inf) Definition
- Choosing a Deployment Method
- Visual Studio 6.0 Glossary - Nonalphabetic Terms
- definitions of
.DEF, .MAP, .LIB, .PCH, .PDB ...
- definitions of
- Locale ID (LCID) Values as Assigned by Microsoft
- Language Identifier Constants and Strings
- Code Page Identifiers
- Windows Programming
Basic
- Using
extern
to Specify Linkage(MSDN) - MACRO Revisited(MSDN, 12 Aug 2011)
_UNICODE, UNICODE, _DEBUG, DEBUG, _WIN32, WIN32, _WINDOWS
- Using MFC as Part of a DLL
_WINDLL, _USRDLL, _AFXDLL
dllexport, dllimport
(MSDN)- What does
__declspec(dllimport)
really mean?(Jan 14 '12) - Microsoft Multilingual User Interface (MUI) and Visual Studio 2008
- Difference between LPVOID and void*(Jan 1 '10)
- Using Insertion Operators(<<) and Controlling Format
- Dynamic-link library(Wikipedia)
- Load-Time Dynamic Linking
- Run-Time Dynamic Linking
- Using Dynamic-Link Libraries
- Load-time dynamic linking, Run-time dynamic linking, Shared memory in a dynamic-link library, Thread local storage in a dynamic-link library
- Microsoft Visual C++ Static and Dynamic Libraries(26 Jul 2010)
- Working with Import Libraries and Export Files
- String
wchar_t
Is Native Type- Win32 Character Encodings
WCHAR
,LPSTR
,LPCSTR
(Constant Pointer),LPWSTR
(Wide Pointer),LPCWSTR
(Constant Wide Pointer),TCHAR
,LPTSTR
(TCHAR Pointer),LPCTSTR
(Constant TCHAR Pointer)
- Wide Characters and Windows
TEXT
macro- Using
CString
- Unicode and Character Set Functions
- String Functions
- Strsafe Functions
StringCbCopy
functionStringCbCopy
,StringCbCopyA
, andStringCbCopyW
StringCchPrintf
function
- Format Specification Syntax:
printf
andwprintf
Functions strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l
: Gets the length of a stringwcstombs, _wcstombs_l
: Converts a sequence of wide characters to a corresponding sequence of multibyte characters.strcat, wcscat, _mbscat
: Appends a stringatoi, _atoi_l, _wtoi, _wtoi_l
: Convert a string to integer.
- Concurrency
Libraries
windows.h
windows.h
(in MinGW)winbase.h
(in MinGW)windef.h
(in MinGW)sdkddkver.h
(in MinGW)- Microsoft Windows library files(Wikipedia)
KERNEL32.DLL
,GDI32.DLL
,USER32.DLL
,MSVCRT.DLL
,MSVCPP.DLL
- Windows Dynamic-Link Library Functions
- Process and Thread Functions
- Error Handling Functions
Build
- Do-It-Yourself Solution for msvcp90d.dll Problems
- seems to be incorrect but informative
- How to: Set Debug and Release Configurations
- Project Settings for a C++ Debug Configuration
- HowTo: Export C++ classes from a DLL (13 Nov 2012)
- Exporting from a DLL Using DEF Files
- Module-Definition (.Def) Files
- DLL Module-Definition Files
- Creating Precompiled Header Files
- The Visual C++ Linker best practices: Developer Iteration(29 Oct 2013)
- How to use precompiled headers efficiently (using /Yc and Yu options)?(Mar 3 '11)
- Dynamic-Link Library Search Order
- IExpress Technology and the IExpress Wizard
- Working with Setup Information (.inf) Files
- INF + SED
- How to detect the presence of the Visual C++ 9.0 runtime redistributable package(29 Jan 2009)
- Preparing a Test Machine To Run a Debug Executable
- Debug versions of an application are not redistributable, and debug versions of the Visual C++ library DLLs are not redistributable.
- Build Macro
- Macros for Build Commands and Properties
$(Configuration), $(ProjectDir), $(TargetDir), $(TargetPath), $(TargetName), $(VSInstallDir), $(VCInstallDir), $(FrameworkDir), $(FrameworkVersion)
- Add User Macro Dialog Box
- Macros for Build Commands and Properties
- Link
- Resource Script
- PE (Portable Executable)
- Portable Executable(Wikipedia)
- Peering Inside the PE: A Tour of the Win32 Portable Executable File Format(March 1994)
- PDB
- Program Database Files (C++)(MSDN, March 2011)
- PDB Files: What Every Developer Must Know(8 MAR , 2014)
- Where the debugger looks for the PDB files. How the source file information is stored in a PDB file.
- Do PDB Files Affect Performance?(8 MAR , 2014)
- Correctly Creating Native C++ Release Build PDBs(8 MAR , 2014)
Testing
- Unit Tests and C++
- Unit testing existing C++ applications with Test Explorer
- Writing Unit tests for C/C++ with the Microsoft Unit Testing Framework for C++
Debugging
- Diagnosing SideBySide failures(14 Apr 2006)
- Part 1: Troubleshooting VC++ Side by Side Problems(7 Aug 2008)
- Part 2: Troubleshooting VC++ Side by Side Problems(7 Aug 2008)
- Getting Started with Windows Debugging
Monitoring
Frameworks
Logging
log4cxx
- http://logging.apache.org/log4cxx/
- Desc. : a logging framework for C++ patterned after Apache log4j
- License : APL
- Sources : https://github.com/apache/log4cxx
- References
- How to use log4cxx?
- Default Initialization Procedure
Default Initialization Procedure
orlog4j.configuration
environment variable
- Default Initialization Procedure
- API Documentation(Doxygen)
- API Documentation (Javadoc like)
- Layout pattern(conversion pattern)
TimeBasedRollingPolicy
RollingFileAppender
- How to use log4cxx?
- Readings
Log4c
- http://log4c.sourceforge.net/
- Desc. : a library of C for flexible logging to files, syslog and other destinations.
- License : LGPL
Libraries
Fundamental
Boost
- http://www.boost.org/
- Desc. : provides free peer-reviewed portable C++ source libraries.
- License : Boost Software License
- References
APL (Apache Portable Runtime)
- http://apr.apache.org/
- Desc. : software libraries that provide a predictable and consistent interface to underlying platform-specific implementations.
- License : Apache License 2.0
GLib
- http://developer.gnome.org/glib/
- Desc. : provides the core application building blocks for libraries and applications written in C
- License : GPL
GDSL (Generic Data Structures Library)
- http://home.gna.org/gdsl/
- Desc. : a collection of routines for generic data structures manipulation.
- License : GPL
Parsing
Oniguruma
- https://github.com/kkos/oniguruma
- Desc. : a modern and flexible regular expressions library.
- License : BSD license
Concurrency
Threading Building Blocks
- https://www.threadingbuildingblocks.org/
- Desc. : a C++ template library developed by Intel for writing software programs that take advantage of multi-core processors.
- License : GPLv2 with the (libstdc++) runtime exception
Security
NaCl
- https://nacl.cr.yp.to/
- Desc. : a new easy-to-use high-speed software library for network communication, encryption, decryption, signatures, etc.
- License :
Image Processing
OpenCV
- http://opencv.org/
- Desc. : an open source computer vision and machine learning software library
- License : BSD license
- Sources : https://github.com/Itseez/opencv
opencv/cv.h
opencv2/core/core_c.h
opencv2/core/types_c.h
ipl.h
(NOT sure whether this is right source)
- Maven artifacts : nu.pattern ≫ opencv
- References
- Readings
- The Intel OpenCV and IP Libraries
- Introduction to programming with OpenCV(January 27, 2006)
- OpenCV GrayScale Conversion
- In OpenCV, what's the difference between CV_8U and CV_8UC1?(Jan 27 '13)
- In
CV_8UC1, CV_8UC2, CV_8UC3, CV_16SC1, CV_16SC2
, and et al,Cn
represents number of channels.
- In
- Resize an image to a square but keep aspect ratio c++ opencv
- How do I choose an image interpolation method? (Emgu/OpenCV) (Jun 24 '10)
- Opencv; How to free
IplImage*
? (Dec 22 '13) - Installation
- Installation in Windows
- Don't miss setting up environment variables of
OPENCV_DIR
andPATH
- Don't miss setting up environment variables of
- How to build applications with OpenCV inside the Microsoft Visual Studio
- Install
OpenCV
2.4.8 withCode::Blocks
,MinGW
&CMake
(2014/06) - How to install OpenCV on Windows (64bit) using MinGW (64) and Codeblocks (2013/02/16)
- OpenCV Installation on Windows + Netbeans + MinGW (23 October 2012)
- Installation in Windows
- Java
- Introduction to Java Development
- Using OpenCV Java with Eclipse
- How to Use OpenCV with Java under Eclipse IDE(3 Feb 2014)
- Java Digital Image Processing Tutorial
- open video file with opencv java(Jul 1 '13)
- make Mat from buffer byte(Mar 24 '13)
- There appears
put
method, explained nowhere and not included in C/C++ API.
- There appears
- Face Recognition
FFmpeg
- https://www.ffmpeg.org/
- Desc. : the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
- License : mainly LGPL
- Written in : C
- Sources : https://github.com/FFmpeg/FFmpeg
- References
- Readings
- An ffmpeg and SDL Tutorial
- FFmpeg-tutorial-samples
- Using
libav*
- Compilation error using ffmpeg library (Oct 15 '12)
- FFmpeg ? the swiss army knife of Internet Streaming ? part I
- Receiving RTSP stream using FFMPEG library (Dec 9 '14)
- how to recognize video codec of a file with ffmpeg
- how to use
av_log
(Wed Sep 7 2005) - swscaler warning : deprecated pixel format used (Apr 14 '14)
Libav
- http://libav.org/
- Desc. : provides cross-platform tools and libraries to convert, manipulate and stream a wide range of multimedia formats and protocols.
- License : LGPL or GPL depending on the choice of configuration options
ImageMagick
- http://www.imagemagick.org/script/
- Desc. : a software suite to create, edit, compose, or convert bitmap images.
- License : Apache 2.0 license
- Written in : C
- Sources : http://git.imagemagick.org/repos/ImageMagick/
misc
POCO
- http://pocoproject.org/
- Desc. : modern, powerful open source C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems.
- License : Boost Software License
WTL (Windows Template Library)
- http://wtl.sourceforge.net/
- Desc. : a C++ library for developing Windows applications and UI components.
- License : Common Public License 1.0
Tools
Compiler
GCC
- https://gcc.gnu.org/
- Desc.
- stands for “GNU Compiler Collection”
- integrated distribution of compilers for several major programming languages including C, C++, Objective-C, Objective-C++, Java, Fortran, Ada, and Go.
- References
- GCC online documentation
- GCC 4.9.2 Manual
dlltool
- used to create the files needed to create dynamic link libraries (DLLs) on systems which understand PE format image files such as Windows.
- Readings
- GCC and Make : Compiling, Linking and Building C/C++ Applications
gcc
: C compilerg++
: C++ compiler> g++ -c -g Hello.cpp //compile only
> g++ -g -o Hello.exe Hello.o //link
- Headers (.h), Static Libraries (.lib, .a) and Shared Library (.dll, .so)
- GCC Environment Variables
ld
and WIN32 (cygwin/mingw)-lxxx
:libxxx.dll.a
,xxx.dll.a
,libxxx.a
,<prefix>xxx.dll
,libxxx.dll
,xxx.dll
- Programming with Cygwin/Building and Using DLLs
- HOWTO Create an Import Library for a DLL using MinGW
- Exporting a class from a DLL for multiple instantiations(May 22nd, 2012)
- GCC and Make : Compiling, Linking and Building C/C++ Applications
MinGW
- http://www.mingw.org/
- Desc. : a minimalist development environment for native Microsoft Windows applications.
- Readings
- What is a DLL and How Do I Create or Use One?
- HOWTO Create and Deploy a Sample DLL using MinGW
- HOWTO Create an Import Library for a DLL using MinGW
- Static and Dynamic/Shared Linking with MinGW
- In the past there were issues in MinGW with direct linking to *.dll, ... it should be fine to link directly against *.dll now.
-lMyLib2 -Wl,-Bstatic -lMyLib1 -Wl,-Bdynamic
Code Analysis
Cppcheck
- http://cppcheck.sourceforge.net/
- Desc. : open source static code analyzer tool for C/C++ programming languages.
Splint
- Readings
- Flags of Splint
- Win32 Installation of Splint
- Re: About splint in Windows
- Exact condition to exclude header file
- The standard behavior of Splint on encountering #include <X.h> is to search for a file named X .h on the include search path (set using --I) and then the system base include path (read from the include environment variable if set or using a default value, usually /usr/include). If X .h is the name of a header file in a loaded standard library and X .h is found in a directory that is a system directory (as set by the -sysdirs flag; the default is /usr/include), X .h will not be included if +skip-iso-headers or +skip-posix-headers (depending on whether X .h is an ISO or POSIX header file) is on (both are on by default). To force all headers to be included normally, use -skip-iso-headers.
Dehydra
- https://wiki.mozilla.org/Dehydra_GCC
- Desc. : a lightweight, scriptable, general purpose static analysis tool capable of application-specific analyses of C++ code.
Documentation
GTK-Doc
- http://www.gtk.org/gtk-doc/
- Desc. : a project which was started to generate API documentation from comments added to C code.
- Readings
- GTK-Doc Manual : http://developer.gnome.org/gtk-doc-manual/stable/
Build Tool
CMake
- https://cmake.org/
- Desc. : an open-source, cross-platform family of tools designed to build, test and package software.