Declaration of isspace in C/C++ not consistent?

Hongxu Chen leftcopy.chx@gmail.com
Sun Jun 2 14:45:00 GMT 2013


Hi list,

Maybe this question is a bit silly, but I just cannot understand why
`isspace` seems not consistent for C and C++(I have put this question in
stackoverflow but no satisfactory answer has been given yet).

I am using *clang* analyzer to get the definition information and I know
quite little about the mechanism behind it, so the declaration result
might not be accurate; but I am just confused.

For c code like this:

    // test.c
    #include <ctype.h>
    int main(int argc, char *argv[]) {
      isspace('a');
      return 0;
    }

clang reports below as the declaration of isspace:

    # define isspace(c)	__isctype((c), _ISspace)  // LINE 207 in /usr/include/ctype.h

and when for this snippet:

    // test.cpp
    #include <cctype>
    int main() {
      std::isspace('t');
      return 0;
    }

clang reports the declaration here:

    __exctype (isspace);  // LINE 120 in /usr/include/ctype.h
    // #define	__exctype(name)	extern int name (int) __THROW

So why should there be such a difference?

-- 
Regards,
Hongxu Chen



More information about the Libc-help mailing list