John Malmberg wrote:
> On VMS, the config.h file is generated to "#define intmax_t long long".
> 
> The csharpexec.c module includes config.h and then includes some header 
> files that redefine intmax_t.
> 
> After it does that, it #includes "classpath.c" which then includes 
> config.h again.
> 
> This causes the original definition to be restored, and the VMS C 
> compiler issues a diagnostic about it.
> 
> #define intmax_t long long
> .................^
> %CC-W-MACROREDEF, The redefinition of the macro "intmax_t" conflicts 
> with a current definition because the replacement lists differ.  The 
> redefinition is now in effect.

This is only a warning, and you can ignore it. Better compilers produce
a diagnostic only for redefinitions with a _different_ expansion.

But anyway, it's easy to make sure config.h is only included once, in
this case:


2017-06-19  Bruno Haible  <br...@clisp.org>

        classpath: Avoid including config.h twice, as it produces warnings.
        Reported by John E. Malmberg <wb8...@gmail.com>.
        * lib/classpath.h: Conditionalize the include of config.h.

diff --git a/lib/classpath.c b/lib/classpath.c
index e56f23f..c7868f6 100644
--- a/lib/classpath.c
+++ b/lib/classpath.c
@@ -15,7 +15,11 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-#include <config.h>
+/* If CLASSPATHVAR is defined, this file is being #included, and config.h is
+   therefore already included.  */
+#if !defined CLASSPATHVAR
+# include <config.h>
+#endif
 
 /* Specification.  */
 #include "classpath.h"


Reply via email to