[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: csharpexec.c causes intmax_t from config.h to be redefined.
From: |
Bruno Haible |
Subject: |
Re: csharpexec.c causes intmax_t from config.h to be redefined. |
Date: |
Mon, 19 Jun 2017 17:09:23 +0200 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-79-generic; KDE/5.18.0; x86_64; ; ) |
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 <address@hidden>
classpath: Avoid including config.h twice, as it produces warnings.
Reported by John E. Malmberg <address@hidden>.
* 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"