それについての議論があったに違いないと思いますが、なぜ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
では、なぜこのような違いが必要なのでしょうか?