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