Skip to content

make error: static declaration of 'isnumber' follows non-static declaration on macOS #2

@muyinliu

Description

@muyinliu
gcc -Wall -O3 -o subsync subsync.c
subsync.c:117:12: error: static declaration of 'isnumber' follows non-static declaration
static int isnumber(char *s);
           ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_ctype.h:323:1: note:
      previous definition is here
isnumber(int _c)
^

subsync.c:606:12: error: static declaration of 'isnumber' follows non-static declaration
static int isnumber(char *s)
           ^
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/_ctype.h:323:1: note:
      previous definition is here
isnumber(int _c)
^

because isnumber is an BSD Library Function, see man page of isnumber on macOS:

ISDIGIT(3)               BSD Library Functions Manual               ISDIGIT(3)

NAME
     isdigit, isnumber -- decimal-digit character test

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <ctype.h>

     int
     isdigit(int c);

     int
     isnumber(int c);

DESCRIPTION
     The isdigit() function tests for a decimal digit character.  Regardless of locale,
     this includes the following characters only:

     ``0''         ``1''         ``2''         ``3''         ``4''
     ``5''         ``6''         ``7''         ``8''         ``9''

     The isnumber() function behaves similarly to isdigit(), but may recognize additional
     characters, depending on the current locale setting.

     The value of the argument must be representable as an unsigned char or the value of
     EOF.

RETURN VALUES
     The isdigit() and isnumber() functions return zero if the character tests false and
     return non-zero if the character tests true.

COMPATIBILITY
     The 4.4BSD extension of accepting arguments outside of the range of the unsigned
     char type in locales with large character sets is considered obsolete and may not be
     supported in future releases.  The iswdigit() function should be used instead.

SEE ALSO
     ctype(3), isalnum_l(3), iswdigit(3), multibyte(3), ascii(7)

STANDARDS
     The isdigit() function conforms to ISO/IEC 9899:1990 (``ISO C90'').

BSD                               May 4, 2007                              BSD

Suggestion: rename function isnumber to is_number_string.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions