1

我正在尝试用猫鼬编译示例中提供的 hello.c。我不断收到错误:

mongoose.c:4752:27: error: '_strtoi64' was not declared in this scope

我查看了 mongoose.c 并_strtoi64在第 109 行定义:

#if defined(_MSC_VER) && _MSC_VER < 1300
#define STRX(x) #x    
#define STR(x) STRX(x)    
#define __func__ __FILE__ ":" STR(__LINE__)
#define strtoull(x, y, z) strtoul(x, y, z)    
#define strtoll(x, y, z) strtol(x, y, z)    
#else    
#define __func__  __FUNCTION__    
#define strtoull(x, y, z) _strtoui64(x, y, z)    
#define strtoll(x, y, z) _strtoi64(x, y, z)    
#endif // _MSC_VER

我尝试在 if 定义之外定义,但我得到了同样的错误。
我看到了: 链接 但它看起来像我已经有这个“修复”的代码版本。

我查看了其他一些介绍猫鼬的问题,但我没有遇到任何问题。

提前致谢

4

1 回答 1

2

我不会认为 Microsoft Visual C++ 是一个有效的 C 编译器。它支持 C89,它主要与 C++ 具有子集兼容性。但是,自 C89 以来,又采用了两个标准:C99 和 C11。建议 C 编译器无法编译 1999 年以来的 C 代码是不合理的。有效的 C99 编译器将正确编译此代码。

简而言之,使用 C 编译器编译 C 代码,使用 C++ 编译器编译 C++ 代码。如果需要将一些 C 代码链接到 C++ 项目,请使用 C 编译器编译 C 代码,然后使用 C++ 链接器将其链接到 C++ 项目。

于 2013-03-26T14:35:29.640 回答