[Doxygen-users] Behaviors of `gcc -E -C'
Brought to you by:
dimitri
From: Roberto B. <ba...@cs...> - 2001-10-08 08:34:46
|
Hi there, here is a problem I have encountered that may be of interest to both the GCC and the DOXYGEN communities. Consider the following 4 non-empty lines of C text: #if 0 /* I would like not to see this. */ int x; #endif Put these 4 lines into a file called foo.c and then try gcc -E -P -C foo.c Here is the behavior I observe with different (official and unofficial) versions of gcc: egcs-2.91.66 (kgcc) produces a blank line egcs-2.95.3 produces a blank line gcc 2.96-85 (RedHat) produces the comment I would like not to see gcc 3.0.1 produces the comment I would like not to see gcc 3.1 20011006 prints nothing (GOOD!) This issue is quite relevant if one uses doxygen (http://www.doxygen.org/), since there comments are relevant (whence the use of `-C'). A situation where the behavior of gcc 2.96-85 and gcc 3.0.1 may byte you is the following: #if 0 /*! A comment referring to x. */ int x; #endif int y; Doxygen uses special comments like the above (notice the exclamation mark) for documentation. When using doxygen is fed with text coming from the GCC preprocessor, gcc 2.96-85 (RedHat) and gcc 3.0.1 cause a comment for (disregarded) x to be applied to y. There are other tools that look inside comments to derive useful information: these are also affected as well. I wrote this message because I believe it is important not to overlook the issue. I have quickly checked the standard documents, but I have not found anything that prescribes the behavior that I consider "desirable". I have also checked the documentation of the `-C' option but this is also somewhat ambiguous on the subject. A last question: even though the CVS HEAD version is OK (for my purposes, at least), what will gcc 3.0.2 do? All the best, Roberto -- Roberto Bagnara Computer Science Group Department of Mathematics, University of Parma, Italy http://www.cs.unipr.it/~bagnara/ mailto:ba...@cs... |