Difference between revisions of "C/C++"
From HCL
(→Creating libraries with Autotools) |
(→Creating libraries with Autotools) |
||
| Line 20: | Line 20: | ||
== Creating libraries with [[Autotools]] == | == Creating libraries with [[Autotools]] == | ||
| − | + | * includes (for the include directory): <code>include_HEADERS = ...</code> | |
| − | + | * library: static <code>lib_LIBRARIES = library.a</code> or dynamic <code>lib_LTLIBRARIES = library.la</code> | |
| − | * | + | * sources (internal C data structures and C++ template classes): <code>library_X_SOURCES = library.h ...</code>, where <code>X</code> = <code>a</code> or <code>la</code> |
| − | + | ** <code>library.h</code> is a [http://en.wikipedia.org/wiki/Precompiled_header precompiled header] (contains common headers and symbols), which is to be included in most of source files of the library | |
| − | + | ||
| + | For example, see: | ||
| + | * http://hcl.ucd.ie/repos/CPM/trunk/MPIBlib/benchmarks/Makefile.am | ||
| + | * http://hcl.ucd.ie/repos/CPM/trunk/MPIBlib/collectives/Makefile.am | ||
Revision as of 17:05, 16 February 2010
Coding
- Coding header files
- One-true-brace ident style
- Learn from examples and use coding approaches from third-party software
Commenting
- Place Doxygen comments in header files (before declarations of namespaces/classes/structs/typedefs/macros) and main source files (for documenting tools and tests)
- Use double forward slash for short comments in the code
C++
- Mixing C/C++
- Template C++ is preferrable from the point of view of runtime performance
- Use plain C unless you need flexible data structures or STL/Boost functionality
- Provide main API in C
General
- Don't use non-standard functions, like itoa
- Handling program arguments
- Dynamic loading of shared libraries
Creating libraries with Autotools
- includes (for the include directory):
include_HEADERS = ... - library: static
lib_LIBRARIES = library.aor dynamiclib_LTLIBRARIES = library.la - sources (internal C data structures and C++ template classes):
library_X_SOURCES = library.h ..., whereX=aorla-
library.his a precompiled header (contains common headers and symbols), which is to be included in most of source files of the library
-
For example, see: