Miscellaneous Environmental Issues
How can I generate HTML documentation for my classes? Does C++ have anything similar to javadoc
?
Yes. Here are a few (listed alphabetically by tool name):
- ccdoc supports
javadoc
-like syntax with various extensions. It’s freely copiable and customizable. - doc++ generates HTML or TeX. Supports
javadoc
-like syntax with various extensions. Open Source. - doxygen generates HTML, LaTeX or RTF. Supports
javadoc
-like syntax with various extensions. Open Source. - PERCEPS generates HTML, TeX, RTF, man page, plain text, and anything else you’d like (it lets you set up arbitrary output formats). It’s freely copiable.
Other documentation tools are listed at
www.robertnz.net/cpp_site.html
.
Is there a TeX or LaTeX macro that fixes the spacing on “C++”?
Yes.
Here are two LaTeX macros for the word “C++”. They prevent line breaks between the “C” and “++”, and the first packs the two “+”s close to each other but the second does not. Try them both and see which one you like best.
\newcommand{\CC}{C\nolinebreak\hspace{-.05em}\raisebox{.4ex}{\tiny\bf +}\nolinebreak\hspace{-.10em}\raisebox{.4ex}{\tiny\bf +}}
\def\CC{{C\nolinebreak[4]\hspace{-.05em}\raisebox{.4ex}{\tiny\bf ++}}}
Here are two more LaTeX macros for the word “C++”. They allow line breaks between the “C” and “++”, which may not be desirable, but they’re included here just in case.
\def\CC{C\raise.22ex\hbox{{\footnotesize +}}\raise.22ex\hbox{\footnotesize +}}
\def\CC{{C\hspace{-.05em}\raisebox{.4ex}{\tiny\bf ++}}}
Are there any pretty-printers that reformat C++ source code?
In alphabetical order:
- A2PS is a Unix-based pretty-printer. It is available from
www.infres.enst.fr/~demaille/a2ps/
- Artistic Style is a reindenter and reformatter of C++, C and Java source code. It is available from
astyle.sourceforge.net/
- C++2LaTeX is a LaTeX pretty printer. It is available from
roederberg.dyndns.org/~arnold/cpp2latex
- C-Clearly by V Communications, Inc. is a Windows program that comes with standard formatting templates and also
allows you to customize your own.
www.mixsoftware.com/product/ccl.htm
- GNU
indent
program may help. It’s available atwww.arceneaux.com/indent.html
. You can also find an “official” GNU mirror site by looking atwww.gnu.org/order/ftp.html
or perhaps the original GNU site,prep.ai.mit.edu/pub/gnu/
(e.g., if the current version is 1.9.1 you could useprep.ai.mit.edu/pub/gnu/indent-1.9.1.tar.gz
). - “HPS Beauty” is reported to be a Windows 95/98/NT4/NT2000 utility that beautifies C/C++ source code based on rules.
The interface is entirely GUI, but HPS Beauty may also be run from the command line. It supports style files, which
allow you to save and restore groups of settings. HPS Beauty also offers an optional visual results window, that
shows both the before and the after file. Optional HTML output allows you to view source code with syntax
highlighting in your browser.
www.highplains.net
. - “ProFactor StyleManager” has lots of options, and is integrated with Microsoft Visual C++. It is a commercial
product with a free 14-day trial period.
www.profactor.co.uk/products.php
. - “Source Styler for C++” has lots of bells and whistles. It is a commercial product with a free 15-day trial
period. It seems to offer control over tons of different features.
www.sourcestyler.com/
. tgrind
is a Unix based pretty printer. It usually comes with the public distribution of TeX and LaTeX in the directory"...tex82/contrib/van/tgrind"
. A more up-to-date version of tgrind by Jerry Leichter can be found on:venus.ycc.yale.edu/pub
in [.TGRIND]. [Note: If anyone has an updated URL for tgrind, please let me know.]uncrustify
fromuncrustify.sourceforge.net
.
Finally, you might consider lgrind
which is another C++ to LaTeX translator (check for the closest mirror site of
the ctan archive). The following is a grind definition for C++ (but
this one doesn’t recognize some new keywords such as bool
or wchar_t
, and it doesn’t recognize a file ending with
.cpp
as C++):
C++|c++|CC:\
:pb=\p\d?\(:cf:np=\)\d?;:bb={:be=}:\
:cb=(SLASH)*:ce=*(SLASH):ab=(SLASH)(SLASH):ae=$:sb=":se=\e":lb=':\
:zb=@:ze=@:tb=%%:te=%%:mb=%\$:me=\$%:vb=%\|:ve=\|%:\
:le=\e':tl:id=_~\::\
:kw=asm auto break case cdecl char continue default do double else\
enum extern far float for fortran goto huge if int interrupt long\
near pascal register return short signed sizeof static struct\
switch typedef union unsigned while void\
#define #else #endif #if #ifdef #ifndef #include #undef # define\
endif ifdef ifndef include undef defined #pragma\
class const delete friend inline new operator overload private\
protected public template this virtual:
Is there a C++-mode for GNU emacs? If so, where can I get it?
Yes, there is a C++-mode for GNU emacs.
The latest and greatest version of C++-mode (and C-mode) is implemented in the file cc-mode.el
. It is an extension
of Detlef and Clamen’s version. A version is included with emacs. Newer version are available from the elisp archives.
Where can I get OS-specific questions answered (e.g., BC++, Windows, etc)?
See one of the following:
- MS-DOS issues:
comp.os.msdos.programmer
- MS-Windows issues:
comp.windows.ms.programmer
- Unix issues:
comp.unix.programmer
- Borland C++ issues (e.g., OWL, BC++ compiler bugs, general C++ concepts, windows programming):
- Using your Web browser:
www.cs.rpi.edu/~wiseb/owl-list/
- To get on the mailing list: send an e-mail message with the word “SUBSCRIBE” in the
Subject:
line to[email protected]
- To get the FAQ:
ftp.netlab.cs.rpi.edu/pub/lists/owl-list-faq/drafts/owl_faq.hlp
- Using your Web browser:
Why does my DOS C++ program says “Sorry: floating point code not linked”?
The compiler attempts to save space in the executable by not including the float-to-string format conversion routines
unless they are necessary, but sometimes it guesses wrong, and gives you the above error message. You can fix this by
(1) using <iostream>
instead of <cstdio>
, or (2) by including the following function somewhere in your compilation
(but don’t call it!):
static void dummyfloat(float *x) { float y; dummyfloat(&y); }
See the FAQ on stream I/O for more reasons to use <iostream>
vs. <cstdio>
.
Why does my BC++ Windows app crash when I’m not running the BC45 IDE?
If you’re using BC++ for a Windows app, and it works okay as long as you have the BC45 IDE running, but when the BC45
IDE is shut down you get an exception during the creation of a window, then add the following line of code to the
InitMainWindow()
member function of your application (YourApp::InitMainWindow()
):
EnableBWCC(TRUE);