On 8/6/20 4:25 PM, Vincent Lefevre wrote:
IMHO, in the mean time, a "void" for the parameter list should be
used when it makes sense.

For what it's worth, I count 13 instances of 'int main (void) { ... }' in Gnulib code, and 136 instances of 'int main () { ... }'. As I recall, the latter is for C++ compatibility, which I guess is not an issue with MPFR.

It's not a big deal either way, but if it helps MPFR out I suppose it's a win. I installed the attached two patches. The first one fixes the problem you mentioned, along with a similar issue in the 'inline' detection. The second one fixes a related problem with 'int main (int argc)'.
>From d3f54e6d5ca216594a8550c1404762a5b8f2ecec Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Thu, 6 Aug 2020 17:37:42 -0700
Subject: [PATCH 1/2] Pacify -Werror in two places
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Although this cannot easily be done in general, there are a couple
of places where it’s easy.
* lib/autoconf/c.m4 (AC_LANG_INT_SAVE (C)):
Change ‘()’ to ‘(void)’ to pacify picky compilers.
Problem reported by Vincent Lefevre in:
https://lists.gnu.org/r/autoconf-patches/2020-08/msg00000.html
(AC_C_INLINE): Likewise.
---
 lib/autoconf/c.m4 | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
index 0027f98b..eaef13a9 100644
--- a/lib/autoconf/c.m4
+++ b/lib/autoconf/c.m4
@@ -194,8 +194,8 @@ return test_array @<:@0@:>@;
 # But we include them only after the EXPRESSION has been evaluated.
 m4_define([AC_LANG_INT_SAVE(C)],
 [AC_LANG_PROGRAM([$1
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
 @%:@include <stdio.h>
 @%:@include <stdlib.h>],
 [
@@ -1747,8 +1747,8 @@ for ac_kw in inline __inline__ __inline; do
   AC_COMPILE_IFELSE([AC_LANG_SOURCE(
 [#ifndef __cplusplus
 typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
 #endif
 ])],
 		    [ac_cv_c_inline=$ac_kw])
-- 
2.17.1

>From 38219077b2d677607cb3d7de12c54085d578a99c Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Thu, 6 Aug 2020 17:40:49 -0700
Subject: [PATCH 2/2] =?UTF-8?q?Avoid=20one-argument=20=E2=80=98main?=
 =?UTF-8?q?=E2=80=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* tests/autotest.at (C unit tests, C unit tests (EXEEXT)):
Avoid ‘int main (int argc)’ as the C standard says this
is not portable.
---
 tests/autotest.at | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/autotest.at b/tests/autotest.at
index dbd86460..5519e9c7 100644
--- a/tests/autotest.at
+++ b/tests/autotest.at
@@ -1904,7 +1904,7 @@ AC_OUTPUT
 
 # Test file
 AT_DATA([testprog.c],
-[[int main(int argc) { return argc == 2 ? 0 : 1; }
+[[int main (int argc, char **argv) { return argc == 2 ? 0 : 1; }
 ]])
 
 # Testsuite
@@ -1956,7 +1956,7 @@ AC_OUTPUT
 
 # Test file
 AT_DATA([testprog.c],
-[[int main(int argc) { return argc == 2 ? 0 : 1; }
+[[int main (int argc, char **argv) { return argc == 2 ? 0 : 1; }
 ]])
 
 # Testsuite
-- 
2.17.1

Reply via email to