Visual C++ 2010/2008 在 C 模式下不接受 `__int64`

Visual C++ 2010/2008 does not accept `__int64` in C mode

我已将问题简化为以下几行:

typedef __int64 int64;
inline int64 qatoll(const char *nptr) { return _atoi64(nptr); }

使用 VC++2008 或 2010 在 C 模式下编译时出现错误:

t.c(2) : error C2054: expected '(' to follow 'inline'
t.c(2) : error C2085: 'qatoll' : not in formal parameter list
t.c(2) : error C2143: syntax error : missing ';' before '{'

在 C++ 模式下,它确实接受函数定义并且只抱怨 _atoi64。 问题是什么,我该如何解决? Visual C++ 15编译无误,请问这与C99支持有关吗?

问题不是 __int64,而是 inline 语法,应该是 _inline

我刚刚在一台旧机器上尝试了类似的代码 运行 MSVC 2008 来验证这一点。