28
votes

I'm using Eclipse CDT to write C++ code. Having read several discussions here on StackOverflow about whether to place doxygen documentation in the header file or the implementation file, it seems the majority of developers favour putting doxygen comments in the header file (although it's by no means a consensus, of course). However, if I put doxygen comments in my header files, I can't get Eclipse to display those comments when I hover the mouse pointer over an instance of the commented method/member. Is there a way to get Eclipse to make use of my Doxygen documentation from my header files in Eclipse's hover tips?

I've set "Documentation tool comments Workspace default" to "Doxygen" in Preferences > C/C++ > Editor.

I'm using Eclipse 3.6.2 with CDT 7.0.2 on Ubuntu 11.04.

2
I stumbled over the same problem. Eclipse CDT can display documentation from the header files without problems as long as it has no access to the implementation source because then it prefers to display the documentation from there (even if there is none). Really annoying.kayahr

2 Answers

1
votes

Doxygen comments are displayed in Eclipse on hover when written in:

  • cpp file (or header) file before method source (not declaration)
  • header file before class declaration
0
votes

I found a workaround for this problem, however it's pretty inconvenient for general use.

If you're using an external build system (make/cmake eg.) where eclipse is unable to pass on it's macro definitions, then all you need to do is place the implementation in it's own include guard and add the include guards macro to eclipse's symbol definitions. This will hide that section of code from eclipse, forcing it to use the intended comments without affecting the build.

For example:

#ifndef INCLUDE_GUARD_FOR_IMPLEMENTATION
#define INCLUDE_GUARD_FOR_IMPLEMENTATION

// Implementation code

#endif

and then in project -> properties -> C/C++ General -> Paths And Symbols add INCLUDE_GUARD_FOR_IMPLEMENTATION under the symbols section.

It does of course have the side effect of greying out the section, and if you can't or don't want to put the implementation code in a separate header it might look rather out of place.