我相信一定有关于它的讨论,但我就是不明白为什么isspace
C 和 C++ 不一致
(我正在使用clang分析器来获取定义信息)
// test.c
#include <ctype.h>
int main(int argc, char *argv[]) {
isspace('a');
return 0;
}
clang 在下面报告 isspace 的声明:
# define isspace(c) __isctype((c), _ISspace) // LINE 207 in /usr/include/ctype.h
以及何时使用此代码段:
// test.cpp
#include <cctype>
int main() {
std::isspace('t');
return 0;
}
clang 在这里报告声明:
__exctype (isspace); // LINE 120 in /usr/include/ctype.h
// #define __exctype(name) extern int name (int) __THROW
那么为什么会有这样的差异呢?